Initial implementation of notification icon.

This commit is contained in:
Ben Rog-Wilhelm 2023-08-27 10:56:16 -05:00
parent 61cecf5a70
commit 6fccfb2436
5 changed files with 92 additions and 4 deletions

View file

@ -12,6 +12,7 @@ from files.classes.alts import Alt
from files.classes.award import AwardRelationship
from files.classes.badges import Badge
from files.classes.base import CreatedBase
from files.classes.chat_message import ChatMessage
from files.classes.clients import * # note: imports Comment and Submission
from files.classes.follows import Follow
from files.classes.mod_logs import ModAction
@ -162,6 +163,30 @@ class User(CreatedBase):
def can_manage_reports(self):
return self.admin_level > 1
@property
@lazy
def can_access_chat(self):
if self.is_suspended_permanently:
return False
if self.admin_level >= PERMS['CHAT_FULL_CONTROL']:
return True
if self.chat_authorized:
return True
return False
@property
@lazy
def unread_chat_messages_count(self):
if not self.can_access_chat:
return 0 # return 0 if the user can't access chat
# Query for all chat messages that are newer than the user's last seen timestamp
unread_messages_count = g.db.query(ChatMessage)\
.filter(ChatMessage.created_datetimez > self.chat_lastseen)\
.count()
return unread_messages_count
@property
def age_days(self):
return (datetime.now() - datetime.fromtimestamp(self.created_utc)).days