File size: 1,355 Bytes
71e71e8 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | 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()
|