@ -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""" |