from admidio_python_api.exceptions import MemberNotFoundException class Event(): def __init__(self, event_id, rol_id, name, start_time, end_time, description, location, country, admidio): self.__c = admidio.db.cursor() self.id = event_id self.rol_id = rol_id self.name = name self.start_time = start_time self.end_time = end_time self.description = description self.location = location self.country = country self.admidio = admidio self.participants = list() self.leaders = list() self.number_of_guests = 0 sql = f"""SELECT mem_usr_id, mem_leader, mem_count_guests, mem_approved FROM {self.admidio.prefix}_members WHERE mem_rol_id = {self.rol_id} AND mem_end = '9999-12-31'""" self.__c.execute(sql) for row in self.__c.fetchall(): try: self.number_of_guests += row[2] # Distinguish between members that will attend, not # attend, or will maybe attend. if row[1] == 1: self.leaders.append( [row[3], self.admidio.getMemberFromID(row[0])]) else: self.participants.append( [row[3], self.admidio.getMemberFromID(row[0])]) except MemberNotFoundException: print( f"Member with id {row[0]} not found, group id: {self.id}") def getAllMembers(self): """Return leaders and members in group, combined""" return self.leaders + self.participants def getAllAttend(self): """Return leaders and members which actually attend""" members = list() for i in (self.leaders + self.participants): if (i[0] == 2): members.append(i) return members def getAllMaybe(self): """Return leaders and members which will maybe attend""" members = list() for i in (self.leaders + self.participants): if (i[0] == 1): members.append(i) return members def getAllNotAttend(self): """Return leaders and members which will not attend""" members = list() for i in (self.leaders + self.participants): if (i[0] == 3): members.append(i) return members def getNumberMembers(self): """Return the total number of members""" return len(self.leaders) + len(self.participants)