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.
 

52 lines
1.7 KiB

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