add moerder list, improve Athenanans names in badge list, clean up main.py file
This commit is contained in:
parent
3f15fa10b3
commit
0381c5ea6c
2 changed files with 34 additions and 6 deletions
17
main.py
17
main.py
|
@ -2,7 +2,7 @@
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
from parse import badge_data, parse, rahmprog_stats, wiki_stats
|
from parse import badge_data, moerder_list, parse, rahmprog_stats, wiki_stats
|
||||||
|
|
||||||
|
|
||||||
def print_wiki_stats(filename: str) -> None:
|
def print_wiki_stats(filename: str) -> None:
|
||||||
|
@ -16,6 +16,17 @@ FILENAME = "koma89_pretixdata.json"
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
# uncomment relevant stuff
|
||||||
|
print("Nothing to do!")
|
||||||
|
|
||||||
#print_wiki_stats(FILENAME)
|
#print_wiki_stats(FILENAME)
|
||||||
with open("badge_data.csv", "w") as f:
|
|
||||||
f.write(badge_data(FILENAME))
|
|
||||||
|
#with open("rahmprogramm_wahlen.csv", "w") as f:
|
||||||
|
# f.write(rahmprog_stats(FILENAME))
|
||||||
|
|
||||||
|
#with open("badge_data.csv", "w") as f:
|
||||||
|
# f.write(badge_data(FILENAME))
|
||||||
|
|
||||||
|
#with open("moerder_list.csv", "w") as f:
|
||||||
|
# f.write(moerder_list(FILENAME))
|
||||||
|
|
23
parse.py
23
parse.py
|
@ -56,11 +56,17 @@ def query_to_csv(filename: Union[str, Path], relevant_items: Collection[int], co
|
||||||
continue
|
continue
|
||||||
for position in order['positions']:
|
for position in order['positions']:
|
||||||
item_id = position['item']
|
item_id = position['item']
|
||||||
attendee_name = position.get('attendee_name')
|
|
||||||
if item_id not in relevant_items:
|
if item_id not in relevant_items:
|
||||||
continue
|
continue
|
||||||
|
# specialcasing custom Athenanas names
|
||||||
|
def get_answer(qa, col):
|
||||||
|
if col != ATHENE_ID or "Sonstiges" not in qa[col]:
|
||||||
|
return qa.get(col, "")
|
||||||
|
return qa.get(ATHENE_CUSTOM_ID, "")
|
||||||
|
|
||||||
quest_ans = {a['question'] : a['answer'] for a in position['answers']}
|
quest_ans = {a['question'] : a['answer'] for a in position['answers']}
|
||||||
res.append((items[item_id], attendee_name) + tuple(quest_ans.get(col) for col in columns))
|
attendee_name = position.get('attendee_name') or "" # for mascots, they are "None" but empty strings are prettier
|
||||||
|
res.append((items[item_id], attendee_name) + tuple(get_answer(quest_ans, col) for col in columns))
|
||||||
|
|
||||||
# hacky sanity check that we do not have to escape csv
|
# hacky sanity check that we do not have to escape csv
|
||||||
for line in res:
|
for line in res:
|
||||||
|
@ -72,10 +78,21 @@ def query_to_csv(filename: Union[str, Path], relevant_items: Collection[int], co
|
||||||
def rahmprog_stats(filename) -> str:
|
def rahmprog_stats(filename) -> str:
|
||||||
return query_to_csv(filename, (HUMAN_ID,), (NICKNAME_ID, RAHMERST_ID, RAHMZWEIT_ID))
|
return query_to_csv(filename, (HUMAN_ID,), (NICKNAME_ID, RAHMERST_ID, RAHMZWEIT_ID))
|
||||||
|
|
||||||
|
def moerder_list(filename) -> str:
|
||||||
|
moerder_id = 301
|
||||||
|
result = query_to_csv(filename, (HUMAN_ID,), (NICKNAME_ID, UNI_ID, moerder_id))
|
||||||
|
ret = ""
|
||||||
|
for line in result.splitlines():
|
||||||
|
if line.endswith('"False"'):
|
||||||
|
# does not want to take part
|
||||||
|
continue
|
||||||
|
ret += line + "\n"
|
||||||
|
return ret
|
||||||
|
|
||||||
def badge_data(filename) -> str:
|
def badge_data(filename) -> str:
|
||||||
pronoun_id = 299
|
pronoun_id = 299
|
||||||
nickname_only_id = 311
|
nickname_only_id = 311
|
||||||
return query_to_csv(filename, (HUMAN_ID, MASCOT_ID), (NICKNAME_ID, nickname_only_id, UNI_ID, pronoun_id, ATHENE_ID, ATHENE_CUSTOM_ID))
|
return query_to_csv(filename, (HUMAN_ID, MASCOT_ID), (NICKNAME_ID, nickname_only_id, UNI_ID, pronoun_id, ATHENE_ID))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue