Files
DualHub/requesthelpers.py
2024-10-07 13:13:07 +02:00

64 lines
1.9 KiB
Python

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