From 81e41a2f2d6f34a2e3eff3fa249a9328f6a9e00e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yannik=20R=C3=B6del?= Date: Thu, 4 Apr 2024 18:13:04 +0200 Subject: [PATCH] Set a form category corresponding to the request Closes #120. --- cgi-bin/form.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/cgi-bin/form.py b/cgi-bin/form.py index 2452cd6..7f08fa6 100755 --- a/cgi-bin/form.py +++ b/cgi-bin/form.py @@ -38,6 +38,17 @@ HONEYPOT_FIELD_NAME = "addressline1" # isn't all too strict. EMAIL_REGEX = re.compile(r"^[^ ]+@[^ ]+\.[^ ]+$") +# Mapping from site-defined devices (see sites/angestoepselt/_data/config.json in this +# repository) to the corresponding Zammad categories: +# https://codeberg.org/angestoepselt/homepage/issues/120#issuecomment-1727768 +# This is a (str | int) -> str map because some keys we check against below might be +# integers and it's just easier to type this way. +FORM_CATEGORY_MAP: dict[str | int, str] = { + "Laptop": "laptop", + "Laptop ohne Akku": "laptop-battery-missing", + "Desktop-Computer": "desktop", +} + SITE_DIRECTORY = os.environ.get("SITE_DIRECTORY", "") request_uri = os.environ.get("REQUEST_URI", "").lower().rstrip("/") serializer = itsdangerous.URLSafeSerializer("secret key", "salt") @@ -204,6 +215,7 @@ ticket_details["Kontaktperson"] = contact_name ticket_details["Email"] = contact_email form_group = "csw-Allgemein" +form_category: str | None = None match request_uri: case "/kontakt": @@ -232,7 +244,10 @@ match request_uri: case "/computer-beantragen/privat": form_name = "Computerantrag (privat)" form_group = "csw-Anfragen" + ticket_details["Gewünschte Hardware"] = get_form_value("hardware", default="Unbekannt") + form_category = FORM_CATEGORY_MAP.get(ticket_details["Gewünschte Hardware"], None) + ticket_details["Adresse"] = get_form_value("addressline") ticket_details["PLZ"] = get_form_value("postalcode") ticket_details["Stadt"] = get_form_value("city")