github-actions[bot]
Automated sync from GitHub
71e71e8
Raw
History Blame Contribute Delete
2.21 kB
import datetime
from peewee import *
from src.model.BaseModel import BaseModel
from src.model.User import User
from src.model.enums.Language import Language, LANGUAGE_DEFAULT
class Group(BaseModel):
"""
Group class
"""
tg_group_id = CharField(unique=True)
tg_group_name = CharField()
tg_group_username = CharField(null=True)
is_forum = BooleanField(default=False)
last_message_date = DateTimeField(default=datetime.datetime.now)
last_error_date = DateTimeField(null=True)
last_error_message = CharField(null=True)
is_active = BooleanField(default=True)
is_muted = BooleanField(default=False)
language = CharField(max_length=5, default=LANGUAGE_DEFAULT.value)
# Backref
group_chats = None
class Meta:
db_table = "group"
def get_active_users(self) -> list[User]:
"""
Get the active users in the group
:return: The active users in the group
"""
from src.model.GroupUser import GroupUser
return (
User()
.select()
.join(GroupUser)
.join(Group)
.where((Group.id == self.id) & (GroupUser.is_active == True))
)
def get_active_users_ids(self) -> list[int]:
"""
Get the active users ids in the group
:return: The active users ids in the group
"""
return [user.id for user in self.get_active_users()]
def get_language(self) -> Language:
"""
Returns the language of the group, used for texts sent in this group's chat
:return: The language of the group
"""
try:
return Language(self.language)
except ValueError:
return LANGUAGE_DEFAULT
Group.create_table()
# Auto-migrate: add language column for the group language setting
try:
from playhouse.migrate import MySQLMigrator, migrate as pw_migrate
from src.model.BaseModel import db_obj
_migrator = MySQLMigrator(db_obj.get_db())
pw_migrate(
_migrator.add_column(
"group", "language", CharField(max_length=5, default=LANGUAGE_DEFAULT.value)
),
)
except Exception:
pass # Column already exists