mirror of
https://codeberg.org/angestoepselt/homepage.git
synced 2025-05-24 14:46:16 +00:00
Update CoderDojo CSV script
This commit is contained in:
parent
d6a67cce91
commit
06ce52968b
2 changed files with 15 additions and 13 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -20,5 +20,5 @@ _site/
|
||||||
# Private environments in the HTTP playground folder
|
# Private environments in the HTTP playground folder
|
||||||
/playground/*.private.env.json
|
/playground/*.private.env.json
|
||||||
|
|
||||||
coderdojo.csv
|
/playground/*.csv
|
||||||
/httpd.dev.conf
|
/httpd.dev.conf
|
||||||
|
|
|
||||||
|
|
@ -10,13 +10,15 @@ BASE_URL = "https://ticket.z31.it/api/v1"
|
||||||
|
|
||||||
session = requests.Session()
|
session = requests.Session()
|
||||||
session.headers.update({
|
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__":
|
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
|
has_more = True
|
||||||
page = 1
|
page = 1
|
||||||
page_size = 50
|
page_size = 50
|
||||||
|
|
@ -24,7 +26,7 @@ if __name__ == "__main__":
|
||||||
response = session.get(
|
response = session.get(
|
||||||
f"{BASE_URL}/tickets/search",
|
f"{BASE_URL}/tickets/search",
|
||||||
params={
|
params={
|
||||||
"query": 'tags:"Kontaktformular – CoderDojo-Anmeldung"',
|
"query": f'tags:"Kontaktformular – {form_name}"',
|
||||||
"page": str(page),
|
"page": str(page),
|
||||||
"per_page": page_size,
|
"per_page": page_size,
|
||||||
}
|
}
|
||||||
|
|
@ -37,7 +39,7 @@ if __name__ == "__main__":
|
||||||
continue
|
continue
|
||||||
|
|
||||||
assert isinstance(ticket["title"], str)
|
assert isinstance(ticket["title"], str)
|
||||||
if not ticket["title"].endswith(" – CoderDojo-Anmeldung"):
|
if not ticket["title"].endswith(f" – {form_name}"):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
assert isinstance(ticket["article_ids"], list)
|
assert isinstance(ticket["article_ids"], list)
|
||||||
|
|
@ -45,27 +47,27 @@ if __name__ == "__main__":
|
||||||
continue
|
continue
|
||||||
|
|
||||||
assert isinstance(ticket["id"], int)
|
assert isinstance(ticket["id"], int)
|
||||||
ticket_ids.append(ticket["id"])
|
tickets.append((ticket["id"], ticket["created_at"]))
|
||||||
|
|
||||||
page += 1
|
page += 1
|
||||||
has_more = len(ticket_dict) == page_size
|
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 = []
|
rows = []
|
||||||
for ticket_id in ticket_ids:
|
for ticket_id, ticket_timestamp in tickets:
|
||||||
row = {}
|
row = {"Zeitstempel": ticket_timestamp}
|
||||||
|
|
||||||
response = session.get(f"{BASE_URL}/ticket_articles/by_ticket/{ticket_id}")
|
response = session.get(f"{BASE_URL}/ticket_articles/by_ticket/{ticket_id}")
|
||||||
response.raise_for_status()
|
response.raise_for_status()
|
||||||
articles = response.json()
|
articles = response.json()
|
||||||
assert len(articles) >= 2
|
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"):
|
for line in articles[1].get("body", "").split("\n"):
|
||||||
key, value = line.split(": ", 1)
|
key, value = line.split(": ", 1)
|
||||||
row.update({key: value})
|
row.update({key: value.replace("\r", "").replace("\n", " ")})
|
||||||
if key not in fieldnames:
|
if key not in fieldnames:
|
||||||
fieldnames.append(key)
|
fieldnames.append(key)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue