From b3e53ae588eb7d99b9f1c6cd64b74bc4888ec49b Mon Sep 17 00:00:00 2001 From: marko Date: Sat, 8 Mar 2025 17:45:07 +0100 Subject: [PATCH] bugfix bdCheck: add meaningful error message on api retrive failure --- homepage/participo/.vscode/launch.json | 18 +++- homepage/participo/bdCheck.py | 124 ++++++++++++++++--------- 2 files changed, 96 insertions(+), 46 deletions(-) diff --git a/homepage/participo/.vscode/launch.json b/homepage/participo/.vscode/launch.json index 35e98dd..ba74655 100644 --- a/homepage/participo/.vscode/launch.json +++ b/homepage/participo/.vscode/launch.json @@ -6,7 +6,7 @@ "configurations": [ { "name": "post", - "type": "python", + "type": "debugpy", "request": "launch", "program": "testApi.py", "console": "integratedTerminal", @@ -18,7 +18,7 @@ }, { "name": "getTrainees", - "type": "python", + "type": "debugpy", "request": "launch", "program": "testApi.py", "console": "integratedTerminal", @@ -26,5 +26,17 @@ "args": [ "GET", "--endpoint", "trainees" ] - } ] + }, + { + "name": "bdCheck", + "type": "debugpy", + "request": "launch", + "program": "bdCheck.py", + "console": "integratedTerminal", + "justMyCode": true, + "args": [ + + ] + }, + ] } \ No newline at end of file diff --git a/homepage/participo/bdCheck.py b/homepage/participo/bdCheck.py index 517ff82..66584ca 100644 --- a/homepage/participo/bdCheck.py +++ b/homepage/participo/bdCheck.py @@ -3,71 +3,109 @@ from datetime import datetime from MatrixIm import MatrixIm -def get_days_since_birthday(birthday: datetime.date, today: datetime.date=datetime.now()) -> int: +def get_days_since_birthday( + birthday: datetime.date, today: datetime.date = datetime.now() +) -> int: # get number of days distance to birthday in this year: this_year = (datetime(today.year, birthday.month, birthday.day) - today).days # The birthday is already past return it if this_year <= 0: return this_year # otherwise we have to take the distance to last years birthday - return (datetime(today.year-1, birthday.month, birthday.day) - today).days + return (datetime(today.year - 1, birthday.month, birthday.day) - today).days -def get_days_until_birthday(birthday: datetime.date, today: datetime.date=datetime.now()) -> int: + +def get_days_until_birthday( + birthday: datetime.date, today: datetime.date = datetime.now() +) -> int: # get number of days distance to birthday in this year: this_year = (datetime(today.year, birthday.month, birthday.day) - today).days # The birthday is already past return it if this_year >= 0: return this_year # otherwise we have to take the distance to next years birthday - return (datetime(today.year+1, birthday.month, birthday.day) - today).days - + return (datetime(today.year + 1, birthday.month, birthday.day) - today).days with open("testApi.config.yaml", "r") as yaml_file: from yaml import safe_load + config = safe_load(yaml_file) -trainees = [{ - "name": {"family": t['name'], "given": t['vorname']} - , "date_of_birth": datetime.strptime(t['gebDatum'], "%Y-%m-%d") -} for t in testApi.apiCall.call( +response = testApi.apiCall.call( method="GET", host="cwsvJudo.bplaced.net", url="participo/api/trainees", - headers={ - "Authorization": f"Basic: {config['apiKey']}" - } -) if t['gebDatum'] not in [None, "0000-00-00"]] - - -MatrixIm.post( - message="last birthdays: \n" + "\n".join([ - f"- {t['name']['given']} {t['name']['family']}: {get_days_since_birthday(t['date_of_birth'])} ({t['date_of_birth'].strftime('%d.%m.')})" - for t in sorted( - [t for t in trainees if get_days_since_birthday(t['date_of_birth'])>-14] - , key=lambda t: get_days_since_birthday(t['date_of_birth']) - ) - ]) - , home_server_url="https://matrix.org" - , room_id="!vFXxgKsLbRLdWCSTIO:matrix.org" - , credentials={ - 'user': "@ukenth-the-grumpy:matrix.org" - , 'password': "DQpSs1yn9Y26c1zo" - } + headers={"Authorization": f"Basic: {config['apiKey']}"}, ) -MatrixIm.post( - message="next birthdays: \n" + "\n".join([ - f"- {t['name']['given']} {t['name']['family']}: {get_days_until_birthday(t['date_of_birth'])} ({t['date_of_birth'].strftime('%d.%m.')})" - for t in sorted( - [t for t in trainees if get_days_until_birthday(t['date_of_birth'])<14] - , key=lambda t: get_days_until_birthday(t['date_of_birth']) +try: + trainees = [ + { + "name": {"family": t["name"], "given": t["vorname"]}, + "date_of_birth": datetime.strptime(t["gebDatum"], "%Y-%m-%d"), + } + for t in testApi.apiCall.call( + method="GET", + host="cwsvJudo.bplaced.net", + url="participo/api/trainees", + headers={"Authorization": f"Basic: {config['apiKey']}"}, ) - ]) - , home_server_url="https://matrix.org" - , room_id="!vFXxgKsLbRLdWCSTIO:matrix.org" - , credentials={ - 'user': "@ukenth-the-grumpy:matrix.org" - , 'password': "DQpSs1yn9Y26c1zo" - } -) \ No newline at end of file + if t["gebDatum"] not in [None, "0000-00-00"] + ] + + MatrixIm.post( + message="last birthdays: \n" + + "\n".join( + [ + f"- {t['name']['given']} {t['name']['family']}: {get_days_since_birthday(t['date_of_birth'])} ({t['date_of_birth'].strftime('%d.%m.')})" + for t in sorted( + [ + t + for t in trainees + if get_days_since_birthday(t["date_of_birth"]) > -14 + ], + key=lambda t: get_days_since_birthday(t["date_of_birth"]), + ) + ] + ), + home_server_url="https://matrix.org", + room_id="!vFXxgKsLbRLdWCSTIO:matrix.org", + credentials={ + "user": "@ukenth-the-grumpy:matrix.org", + "password": "DQpSs1yn9Y26c1zo", + }, + ) + + MatrixIm.post( + message="next birthdays: \n" + + "\n".join( + [ + f"- {t['name']['given']} {t['name']['family']}: {get_days_until_birthday(t['date_of_birth'])} ({t['date_of_birth'].strftime('%d.%m.')})" + for t in sorted( + [ + t + for t in trainees + if get_days_until_birthday(t["date_of_birth"]) < 14 + ], + key=lambda t: get_days_until_birthday(t["date_of_birth"]), + ) + ] + ), + home_server_url="https://matrix.org", + room_id="!vFXxgKsLbRLdWCSTIO:matrix.org", + credentials={ + "user": "@ukenth-the-grumpy:matrix.org", + "password": "DQpSs1yn9Y26c1zo", + }, + ) +except Exception as e: + MatrixIm.post( + message=f"bdCheck: Exception {e} ({repr(e)})\nResponse was {response}", + home_server_url="https://matrix.org", + room_id="!vFXxgKsLbRLdWCSTIO:matrix.org", + credentials={ + "user": "@ukenth-the-grumpy:matrix.org", + "password": "DQpSs1yn9Y26c1zo", + }, + )