Timeout-Check + MERGE-Prep
This commit is contained in:
@ -8,6 +8,13 @@ nomeal = 'Essen nicht (mehr) verfügbar'
|
||||
|
||||
|
||||
def getMeals(day: datetime):
|
||||
"""
|
||||
Liefert alle Mahlzeiten eines Tages. \n
|
||||
Befinden sie sich schon in der Datenbank, werden diese zurückgegeben. \n
|
||||
Wenn nicht, wird getMealsFromAPI() aufgerufen. \n
|
||||
:param day:
|
||||
:return [Name1, Name2, ...]:
|
||||
"""
|
||||
day = formatDay(day)
|
||||
essen = []
|
||||
query = Meals.query.filter_by(date=day).all()
|
||||
@ -20,6 +27,14 @@ def getMeals(day: datetime):
|
||||
|
||||
|
||||
def getMealsFromAPI(day: str, dbentry: bool = False):
|
||||
"""
|
||||
Fragt die Mensa-API nach den Mahlzeiten eines Tages ab. \n
|
||||
Wenn dbentry: Schreibt die Ergebnisse in die Datenbank. \n
|
||||
TODO: Andere Mensen berücksichtigen.
|
||||
:param day:
|
||||
:param dbentry:
|
||||
:return [Name1, Name2, ...]:
|
||||
"""
|
||||
url = "https://dh-api.paulmartin.cloud/plans/" + day + "?canteens=erzberger"
|
||||
response = requests.request("GET", url)
|
||||
response = response.content
|
||||
@ -64,6 +79,11 @@ def getMealsFromAPI(day: str, dbentry: bool = False):
|
||||
|
||||
|
||||
def pricetofloat(price: str):
|
||||
"""
|
||||
Konvertiert den Preis-String der Mensa-API zu einem Python-Float.
|
||||
:param price:
|
||||
:return float:
|
||||
"""
|
||||
price = price[:-2]
|
||||
price = price.replace(",", ".")
|
||||
try:
|
||||
@ -73,6 +93,12 @@ def pricetofloat(price: str):
|
||||
|
||||
|
||||
def formatDay(day: datetime):
|
||||
"""
|
||||
Füllt ein Datum mit Nullen auf. \n
|
||||
"2023-1-1" → "2023-01-01".
|
||||
:param day:
|
||||
:return str:
|
||||
"""
|
||||
if day.day < 10:
|
||||
tag = "0" + str(day.day)
|
||||
else:
|
||||
@ -83,6 +109,10 @@ def formatDay(day: datetime):
|
||||
|
||||
@scheduler.task('cron', id="refreshMeals", hour='8-11', day_of_week='*', minute='15', week='*', second='30')
|
||||
def refreshMeals():
|
||||
"""
|
||||
Aktualisiert immer vormittags alle Mahlzeiten in der Datenbank. \n
|
||||
Datenbankeinträge werden ersetzt, wenn die API andere Mahlzeiten liefert.
|
||||
"""
|
||||
print("Aktualisiere Essenspläne...\n")
|
||||
with scheduler.app.app_context():
|
||||
table = Meals.query.all()
|
||||
|
||||
Reference in New Issue
Block a user