from .exceptions import MemberNotFoundException
|
|
import hashlib
|
|
|
|
|
|
class Group:
|
|
def __init__(self, group_id, name, admidio):
|
|
self.__c = admidio.db.cursor()
|
|
self.id = group_id
|
|
self.name = name
|
|
self.admidio = admidio
|
|
self.members = list()
|
|
self.leaders = list()
|
|
sql = f"""SELECT mem_usr_id, mem_leader
|
|
FROM {self.admidio.prefix}_members
|
|
WHERE mem_rol_id = {self.id}
|
|
AND mem_end = '9999-12-31'"""
|
|
self.__c.execute(sql)
|
|
|
|
for row in self.__c.fetchall():
|
|
try:
|
|
if row[1] == 1:
|
|
self.leaders.append(admidio.getMemberFromID(row[0]))
|
|
else:
|
|
self.members.append(admidio.getMemberFromID(row[0]))
|
|
except MemberNotFoundException:
|
|
print(f"Member with id {row[0]} not found, group id: {self.id}")
|
|
|
|
def __eq__(self, other):
|
|
if isinstance(other, Group):
|
|
return self.hash() == other.hash()
|
|
|
|
def hash(self):
|
|
return hashlib.md5(
|
|
(
|
|
str(self.id)
|
|
+ self.name
|
|
+ ("".join(str(x) for x in self.members) or "")
|
|
+ ("".join(str(x) for x in self.leaders) or "")
|
|
).encode("utf-8")
|
|
).hexdigest()
|
|
|
|
def getAllMembers(self):
|
|
"""Return leaders and members in group, combined"""
|
|
return self.leaders + self.members
|