diff --git a/.gitignore b/.gitignore index b9763da..fb75b4b 100644 --- a/.gitignore +++ b/.gitignore @@ -20,5 +20,5 @@ _site/ # Private environments in the HTTP playground folder /playground/*.private.env.json -coderdojo.csv +/playground/*.csv /httpd.dev.conf diff --git a/playground/coderdojo.py b/playground/coderdojo.py index 6a2f13c..fa68304 100644 --- a/playground/coderdojo.py +++ b/playground/coderdojo.py @@ -10,13 +10,15 @@ BASE_URL = "https://ticket.z31.it/api/v1" session = requests.Session() session.headers.update({ - "Authorization": f"Token token={getpass.getpass(prompt='Zammad-Token eingeben: ')}" + "Authorization": f"Token token={getpass.getpass(prompt='Zammad-Token: ')}" }) if __name__ == "__main__": - ticket_ids = [] + tickets = [] - print("Suche nach aktuellen CoderDojo-Anmeldungen…", file=sys.stderr) + print("Formular [CoderDojo-Anmeldung]: ", file=sys.stderr, end="", flush=True) + form_name = input() or "CoderDojo-Anmeldung" + print("Suche nach aktuellen Einträgen…", file=sys.stderr) has_more = True page = 1 page_size = 50 @@ -24,7 +26,7 @@ if __name__ == "__main__": response = session.get( f"{BASE_URL}/tickets/search", params={ - "query": 'tags:"Kontaktformular – CoderDojo-Anmeldung"', + "query": f'tags:"Kontaktformular – {form_name}"', "page": str(page), "per_page": page_size, } @@ -37,7 +39,7 @@ if __name__ == "__main__": continue assert isinstance(ticket["title"], str) - if not ticket["title"].endswith(" – CoderDojo-Anmeldung"): + if not ticket["title"].endswith(f" – {form_name}"): continue assert isinstance(ticket["article_ids"], list) @@ -45,27 +47,27 @@ if __name__ == "__main__": continue assert isinstance(ticket["id"], int) - ticket_ids.append(ticket["id"]) + tickets.append((ticket["id"], ticket["created_at"])) page += 1 has_more = len(ticket_dict) == page_size - print(f"{len(ticket_ids)} Anmeldung(en) gefunden. Hole jetzt die Details…", file=sys.stderr) + print(f"{len(tickets)} Element(e) gefunden. Hole jetzt die Details…", file=sys.stderr) - fieldnames = [] + fieldnames = ["Zeitstempel"] rows = [] - for ticket_id in ticket_ids: - row = {} + for ticket_id, ticket_timestamp in tickets: + row = {"Zeitstempel": ticket_timestamp} response = session.get(f"{BASE_URL}/ticket_articles/by_ticket/{ticket_id}") response.raise_for_status() articles = response.json() assert len(articles) >= 2 - row.update({"Nachricht": articles[0].get("body", "")}) + row.update({"Nachricht": articles[0].get("body", "").replace("\r", "").replace("\n", " ")}) for line in articles[1].get("body", "").split("\n"): key, value = line.split(": ", 1) - row.update({key: value}) + row.update({key: value.replace("\r", "").replace("\n", " ")}) if key not in fieldnames: fieldnames.append(key) diff --git a/sites/coderdojo/_static/Montessori-Wegbeschreibung.pdf b/sites/coderdojo/_static/Montessori-Wegbeschreibung.pdf new file mode 100644 index 0000000..a079756 Binary files /dev/null and b/sites/coderdojo/_static/Montessori-Wegbeschreibung.pdf differ