from flask_login import current_user as currentUser import fetchDUALIS from init import Semesterlist, User, db from datetime import datetime def getCookie(cookies): """ Liefert (letzten) Cookie der Cookies-Liste zurück. :param cookies: :return Cookie: """ cookie = 0 for c in cookies: cookie = c.value return cookie async def getSemesterList(uid, token, cookie): """ Liefert die IDs der Semester für den User :param uid: :param token: :param cookie: :return Semester-ID-Liste: """ dbSemesterList = Semesterlist.query.filter_by(uid=uid).all() semesterList = [] for semester in dbSemesterList: semesterList += [[semester.semestername, semester.semesterid]] semesterList.sort(key=lambda x: x[-1], reverse=True) shortList = (int(x[0][-2:]) for x in semesterList) for shortYear in shortList: if (shortYear > datetime.now().year-2000) or (len(semesterList) == 6): return semesterList return await semesterDualisToDB(semesterList, token, cookie) async def semesterDualisToDB (semesterlist, token, cookie): """ Gleicht die Semester-Einträge der mitgegebenen Liste mit den Semester-Einträgen von Dualis ab und schreibt Differenzen in die Datenbank. :param semesterlist: :param token: :param cookie: :return Semester-ID-Liste: """ semesterDualis = await fetchDUALIS.getSem(token, cookie) for i in semesterDualis: if i not in semesterlist: semsterItem = Semesterlist(semestername=i[0], semesterid=i[1], uid=currentUser.id, itemid=currentUser.id * int(i[1][-7:]) // 1000000) db.session.add(semsterItem) db.session.commit() return semesterDualis def loadUser(uid): """ Hilfsfunktion, die den User für die UID zurückgibt. :param uid: :return User: """ return User.query.filter_by(id=uid).first()