| @ -0,0 +1,52 @@ | |||||
| import MySQLdb | |||||
| import member | |||||
| import group | |||||
| from exceptions import MemberNotFoundException | |||||
| class Admidio: | |||||
| """Creates the Admidio Class""" | |||||
| def __init__(self, mysql_host, mysql_user, mysql_pass, mysql_db): | |||||
| self.db = MySQLdb.connect( | |||||
| host=mysql_host, user=mysql_user, passwd=mysql_pass, db=mysql_db) | |||||
| self.members = dict() | |||||
| self.groups = dict() | |||||
| self.userfields = None | |||||
| self.initAll() | |||||
| def __del__(self): | |||||
| self.db.close() | |||||
| def initAll(self): | |||||
| """initializes all Members and Groups""" | |||||
| c = self.db.cursor() | |||||
| # Initializing member. Get ID and Name for the user fields. | |||||
| sql = "SELECT usf_id,usf_name_intern FROM `adm_user_fields`" | |||||
| c.execute(sql) | |||||
| self.userfields = dict(c.fetchall()) | |||||
| sql = """SELECT usr_id, usr_login_name, usr_password | |||||
| FROM adm_users WHERE usr_valid = 1""" | |||||
| c.execute(sql) | |||||
| for row in c.fetchall(): | |||||
| self.members[row[0]] = member.Member( | |||||
| self.db, row[0], row[1], | |||||
| row[2], self.userfields, self) | |||||
| print(self.members[row[0]]) | |||||
| sql = """SELECT rol_id, rol_name, rol_description FROM adm_roles | |||||
| WHERE rol_visible=1 AND rol_valid=1""" | |||||
| c.execute(sql) | |||||
| for row in c.fetchall(): | |||||
| self.groups[row[0]] = group.Group(self.db, row[0], row[1], self) | |||||
| def getMemberFromID(self, user_id): | |||||
| """Returns Member object if user_id exists,""" \ | |||||
| """ otherwise throws MemberNotFoundException""" | |||||
| if user_id in self.members: | |||||
| return self.members[user_id] | |||||
| else: | |||||
| raise MemberNotFoundException( | |||||
| f"Member with id {user_id} not found") | |||||
| @ -0,0 +1,3 @@ | |||||
| class MemberNotFoundException(Exception): | |||||
| """Exception raised when Member ID can't be found""" | |||||
| pass | |||||
| @ -0,0 +1,29 @@ | |||||
| from exceptions import MemberNotFoundException | |||||
| class Group: | |||||
| def __init__(self, db, group_id, name, admidio): | |||||
| self.__c = db.cursor() | |||||
| self.id = group_id | |||||
| self.name = name | |||||
| self.admidio = admidio | |||||
| self.members = list() | |||||
| self.leaders = list() | |||||
| sql = ("""SELECT mem_usr_id, mem_leader FROM adm_members""" | |||||
| f""" WHERE mem_rol_id = {self.id}""") | |||||
| self.__c.execute(sql) | |||||
| for row in self.__c.fetchall(): | |||||
| print(row) | |||||
| 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 getAllMembers(self): | |||||
| """Return leaders and members in group, combined""" | |||||
| return self.leaders.append(self.members) | |||||
| @ -0,0 +1,6 @@ | |||||
| from admidio import Admidio | |||||
| import config | |||||
| adm = Admidio( | |||||
| config.DATABASE['host'], config.DATABASE['user'], config.DATABASE['pass'], | |||||
| config.DATABASE['db']) | |||||
| @ -0,0 +1,47 @@ | |||||
| import pprint | |||||
| class Member(): | |||||
| """Member class for admidio, here all member data will be stored.""" | |||||
| def __init__(self, db, user_id, username, password, userfields, admidio): | |||||
| self.__c = db.cursor() | |||||
| self.user_id = user_id | |||||
| self.username = username | |||||
| self.password = password | |||||
| self.userdata = dict() | |||||
| self.admidio = admidio | |||||
| sql = f"""SELECT usd_usf_id, usd_value FROM adm_user_data | |||||
| WHERE usd_usr_id = {self.user_id!s}""" | |||||
| self.__c.execute(sql) | |||||
| for row in self.__c.fetchall(): | |||||
| # makes dict with {usf_name_intern:usd_value} | |||||
| self.userdata[userfields[row[0]]] = row[1] | |||||
| def __hash__(self): | |||||
| """Not sure if needed""" | |||||
| return hash((self.user_id, self.username)) | |||||
| def __str__(self): | |||||
| return (f"""Userid: {self.user_id}, Username: {self.username}, """ | |||||
| f"""Userdata: {pprint.pformat(self.userdata)}""") | |||||
| """@property | |||||
| def email(self): | |||||
| return self.userdata['EMAIL'] | |||||
| @property | |||||
| def firstName(self): | |||||
| return self.userdata['FIRST_NAME'] | |||||
| @property | |||||
| def lastName(self): | |||||
| return self.userdata['LAST_NAME'] | |||||
| @property | |||||
| def username(self): | |||||
| self.username | |||||
| @property | |||||
| def password(self): | |||||
| return self.password""" | |||||