Move get_minutes_played_today into navigation handler module

This commit is contained in:
Ben 2020-02-14 21:43:27 +00:00
parent 5b43ac7ade
commit beee263e88
2 changed files with 14 additions and 13 deletions

View File

@ -1,4 +1,4 @@
from datetime import datetime, date from datetime import datetime
from houdini.data import db from houdini.data import db
@ -112,15 +112,6 @@ class Penguin(db.Model):
def status_field_get(self, field_bitmask): def status_field_get(self, field_bitmask):
return (self.status_field & field_bitmask) != 0 return (self.status_field & field_bitmask) != 0
@property
def minutes_played_today(self):
async def get_minutes():
yesterday = datetime.combine(date.today(), datetime.min.time())
minutes_played_today = await db.select([db.func.sum(Login.minutes_played)]) \
.where((Login.penguin_id == self.id) & (Login.date > yesterday)).gino.scalar()
return minutes_played_today or 0
return get_minutes()
@property @property
@lru_cache() @lru_cache()
def age(self): def age(self):

View File

@ -1,13 +1,16 @@
from houdini import handlers from houdini import handlers
from houdini.handlers import XTPacket from houdini.handlers import XTPacket
from houdini.data import db
from houdini.data.room import Room from houdini.data.room import Room
from houdini.data.penguin import Login from houdini.data.penguin import Penguin, Login
from houdini.data.room import PenguinIglooRoom, PenguinBackyardRoom, RoomCollection from houdini.data.room import PenguinIglooRoom, PenguinBackyardRoom, RoomCollection
from houdini.constants import ClientType, StatusField from houdini.constants import ClientType, StatusField
import random import random
import time import time
from datetime import datetime import pytz
from datetime import date, datetime
@handlers.boot @handlers.boot
async def rooms_load(server): async def rooms_load(server):
@ -44,7 +47,7 @@ async def handle_join_server(p, penguin_id: int, login_key: str):
minutes_until_timer_end = datetime.combine(datetime.today(), p.timer_end) - datetime.now() minutes_until_timer_end = datetime.combine(datetime.today(), p.timer_end) - datetime.now()
minutes_until_timer_end = minutes_until_timer_end.total_seconds() // 60 minutes_until_timer_end = minutes_until_timer_end.total_seconds() // 60
minutes_played_today = await p.minutes_played_today minutes_played_today = await get_minutes_played_today(p)
minutes_left_today = (p.timer_total.total_seconds() // 60) - minutes_played_today minutes_left_today = (p.timer_total.total_seconds() // 60) - minutes_played_today
p.egg_timer_minutes = int(min(minutes_until_timer_end, minutes_left_today)) p.egg_timer_minutes = int(min(minutes_until_timer_end, minutes_left_today))
else: else:
@ -81,6 +84,13 @@ async def handle_join_room(p, room: Room, x: int, y: int):
await p.join_room(room) await p.join_room(room)
async def get_minutes_played_today(p):
yesterday = datetime.combine(date.today(), datetime.min.time())
minutes_played_today = await db.select([db.func.sum(Login.minutes_played)]) \
.where((Login.penguin_id == p.id) & (Login.date > yesterday)).gino.scalar()
return minutes_played_today or 0
async def create_temporary_room(p, penguin_id): async def create_temporary_room(p, penguin_id):
igloo = None igloo = None
if penguin_id in p.server.penguins_by_id: if penguin_id in p.server.penguins_by_id: