import datetime from peewee import * from src.model.BaseModel import BaseModel from src.model.Group import Group from src.model.User import User class GroupUser(BaseModel): """ Group User class """ group = ForeignKeyField(Group, backref="groups", on_delete="RESTRICT", on_update="CASCADE") user = ForeignKeyField(User, backref="users", on_delete="RESTRICT", on_update="CASCADE") last_message_date = DateTimeField(default=datetime.datetime.now) is_active = BooleanField(default=True) is_admin = BooleanField(default=False) class Meta: db_table = "group_user" @staticmethod def get_user_is_active_is_same_group_statement(user_1, user_2): return ( GroupUser.select(fn.COUNT(GroupUser.group).alias("count_same_group")).where( GroupUser.user == user_1, GroupUser.is_active == True, GroupUser.group.in_( GroupUser.select(GroupUser.group).where( GroupUser.user == user_2, GroupUser.is_active == True ) ), ) ) > 0 @staticmethod def set_no_longer_admin(user, group): GroupUser.update(is_admin=False).where( (GroupUser.user == user) & (GroupUser.group == group) ).execute() GroupUser.create_table()