The objective of this interface is the ability to get data from an Admidio installation and use them in python. Currently Users, groups and events are integrated
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

82 lines
2.5 KiB

from admidio_python_api.exceptions import MemberNotFoundException
class Event():
def __init__(self, db, event_id, rol_id, name, start_time, end_time,
description, location, country, admidio):
self.__c = 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)