from datetime import datetime from auth import model from sqlalchemy import text from sqlalchemy.exc import OperationalError from datetime import datetime from db import dbauth session = dbauth.session BINDKEY = "auth" def _db_V01_00(): # "bind_key=None" bedeutet hier, dass bei "create_all" nur die Models mit # Default-Bind erzeugt werden sollen und nicht die anderen, insbesonder # nicht die zum MS-SQL-SErver dbauth.create_all(bind_key=BINDKEY) systeminfo = model.Systeminfo() systeminfo.id = 1 systeminfo.version = "01.00" systeminfo.lastupdate = datetime.now() systeminfo.initialinstall = datetime.now() session.add(systeminfo) session.commit() def _db_V01_01(): u = model.User() u.id = 1 u.userid = 'System.Admin' u.username = 'Systemadministrator' u.password = "geheim" u.email = '' session.add(u) sysmgr = model.Role() sysmgr.id = 1 sysmgr.name = "Systemadministrator" sysmgr.roleid = "SysAdmin" session.add(sysmgr) appmgr = model.Role() appmgr.name = "Anwendungsadministrator" appmgr.roleid = "AppAdmin" session.add(appmgr) usermgr = model.Role() usermgr.name = "Benutzerverwaltung" usermgr.roleid = "UserMgr" session.add(usermgr) application = model.Application() application.id = 1 application.appid = "Project01" application.name = "Project01 (Name ändern)" session.add(application) userapp = model.Userapp() userapp.application = application userapp.userapp_roles.append(sysmgr) session.add(userapp) u.userapps.append(userapp) _updatesysteminfo('01.01') session.commit() def _updatesysteminfo(versionnr): s: model.Systeminfo = model.Systeminfo.query.get(1) s.version = versionnr s.lastupdate = datetime.now() return def checkupdates(): systeminfo = None curr_dbversion = '_db_V01_00' try: systeminfo: model.Systeminfo = model.Systeminfo.query.get(1) curr_dbversion = "_db_V" + systeminfo.version.replace(".", "_") except (OperationalError, AttributeError): _db_V01_00() versionen = sorted(filter(lambda f: f.startswith("_db_V"),globals())) for v in versionen: if v > curr_dbversion: globals()[v]() # https://docs.python.org/3.6/library/functions.html?highlight=globals#globals print('########## Database updated')