diff --git a/conf_notifications.ini b/conf_notifications.ini new file mode 100644 index 0000000..b212278 --- /dev/null +++ b/conf_notifications.ini @@ -0,0 +1,5 @@ +[masonde_001] +email = email@fqdn + email@fqdn.co.uk + masonde_001@fqdn + diff --git a/papi/main.py b/papi/main.py index 0e4a6cc..28885b1 100644 --- a/papi/main.py +++ b/papi/main.py @@ -1,4 +1,6 @@ from typing import Optional, List +from configparser import ConfigParser + from pydantic import BaseModel from fastapi import FastAPI, Request, Body, Depends @@ -21,6 +23,21 @@ notifications = defaultdict(list) Base.metadata.create_all(bind=engine) +conf = ConfigParser() +conf.read("conf_notifications.ini") + + +def sondeid2notifsemails(idsonde, mapping=conf): + try: + section = mapping[idsonde] + except KeyError: + raise KeyError(f"{idsonde} non trouvé dans {list(mapping.keys())}") + + mails = section["email"] + if isinstance(mails, str): + mails = [x.strip() for x in mails.split("\n")] + return mails + def get_db(): db = SessionLocal() @@ -80,8 +97,12 @@ def list_notification(idsonde: str): @app.get("/notifications/{idsonde}/text") def list_notification_as_text(idsonde: str): content = notifications[idsonde][-1] + recipients = sondeid2notifsemails(idsonde) + changements = content["changes"] + status = content["status"] - return + data = {"recipients": recipients, "changements": changements, "status": status} + return data @app.post("/sonde/{idsonde}/") diff --git a/tests/test_papi.py b/tests/test_papi.py index 206ea0b..9cba1c8 100644 --- a/tests/test_papi.py +++ b/tests/test_papi.py @@ -149,11 +149,11 @@ def test_onchange_notification(): def test_template_rendering(): - idsonde = "masonde_histo" + idsonde = "masonde_001" notifs_text = client.get(f"/notifications/{idsonde}/text") assert notifs_text.ok content = notifs_text - assert "contenu" in content.text.lower() + assert f"{idsonde}@fqdn" in content.text.lower() class CodeCoverageTestCase(TestCase):