feature (stats): Weekly and monthly goals.
Add a new editing interface for weekly and monthly goals. Textual viewing interface is currently a stub. Add `month_timestamp` and `week_timestamp` lion properties.
This commit is contained in:
@@ -146,6 +146,37 @@ class Lion:
|
||||
now = datetime.now(tz=self.timezone)
|
||||
return now.replace(hour=0, minute=0, second=0, microsecond=0)
|
||||
|
||||
@property
|
||||
def day_timestamp(self):
|
||||
"""
|
||||
EPOCH timestamp representing the current day for the user.
|
||||
NOTE: This is the timestamp of the start of the current UTC day with the same date as the user's day.
|
||||
This is *not* the start of the current user's day, either in UTC or their own timezone.
|
||||
This may also not be the start of the current day in UTC (consider 23:00 for a user in UTC-2).
|
||||
"""
|
||||
now = datetime.now(tz=self.timezone)
|
||||
day_start = now.replace(hour=0, minute=0, second=0, microsecond=0)
|
||||
return int(day_start.replace(tzinfo=pytz.utc).timestamp())
|
||||
|
||||
@property
|
||||
def week_timestamp(self):
|
||||
"""
|
||||
EPOCH timestamp representing the current week for the user.
|
||||
"""
|
||||
now = datetime.now(tz=self.timezone)
|
||||
day_start = now.replace(hour=0, minute=0, second=0, microsecond=0)
|
||||
week_start = day_start - timedelta(days=day_start.weekday())
|
||||
return int(week_start.replace(tzinfo=pytz.utc).timestamp())
|
||||
|
||||
@property
|
||||
def month_timestamp(self):
|
||||
"""
|
||||
EPOCH timestamp representing the current month for the user.
|
||||
"""
|
||||
now = datetime.now(tz=self.timezone)
|
||||
month_start = now.replace(day=1, hour=0, minute=0, second=0, microsecond=0)
|
||||
return int(month_start.replace(tzinfo=pytz.utc).timestamp())
|
||||
|
||||
@property
|
||||
def remaining_in_day(self):
|
||||
return ((self.day_start + timedelta(days=1)) - datetime.now(self.timezone)).total_seconds()
|
||||
|
||||
Reference in New Issue
Block a user