Compare commits

..

No commits in common. "a3d057d5b090b727d64fd059575afb9026c03e7c" and "03c2329c7b7ef991e76fbff07ec3b4557cbe18e3" have entirely different histories.

9 changed files with 34 additions and 46275 deletions

2
.gitignore vendored
View file

@ -2,4 +2,4 @@
*.swo *.swo
__pycache__ __pycache__
deploy/*/index.html deploy/index.html

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

View file

@ -1,8 +0,0 @@
<!DOCTYPE html>
<html>
<body>
<a href="./de/index.html"> Deutsch </a>
<br />
<a href="./en/index.html"> English </a>
</body>
</html>

View file

@ -15,12 +15,11 @@ def get_names(filename, pad = " "):
] ]
return names return names
greeting = {"": """ greeting = """
Re: AW: Studierendenabfrage Re: AW: Studierendenabfrage
von: Prüfungsverwaltung von: Prüfungsverwaltung
--------- ---------
English-only version at cc.ifsr.de/en, this page is bilingual. Englisch version below.
Eine nur auf deutsch formulierte Variante ist unter cc.ifsr.de/de
Hallo, Hallo,
@ -31,7 +30,7 @@ Vielleicht können Sie die ja mit regulären Ausdrücken filtern.
Das funktioniert wie normale Text-Suche, nur etwas flexibler: Das funktioniert wie normale Text-Suche, nur etwas flexibler:
(Erst|Zweit)versuch z.B. würde sowohl 'Erstversuch' (Erst|Zweit)versuch z.B. würde sowohl 'Erstversuch'
als auch 'Zweitversuch' markieren. als auch 'Zweitversuch' markieren.
.* akzeptiert alle Zeichen, das können Sie an die 'Expression' .+ akzeptiert alle Zeichen, das können Sie an die 'Expression'
(oben auf der Seite) vorn anfügen, (oben auf der Seite) vorn anfügen,
um im Menü 'List' unten rechts den Anfang der Zeile zu sehen. um im Menü 'List' unten rechts den Anfang der Zeile zu sehen.
Sie sollten etwa 5 Studierende finden. Sie sollten etwa 5 Studierende finden.
@ -40,61 +39,24 @@ Viel Spaß
=== ENGLISCH VERSION === === ENGLISCH VERSION ===
Hi, Hi,
there is no database for this exam, so I added our digitized notes below, there is no database for this exam, so I added our digitized notes below,
always with the auto-generated english translation. always with the auto-generated english translation.
Maybe you can filter it with regular expressions? Maybe you can filter it with regular expressions?
They are like normal text-search but more flexible: They are like normal text-search but more flexible:
E.g.: (Erst|Zweit)versuch would select both words: E.g.: (Erst|Zweit)versuch would select both words:
'Erstversuch' (first attempt) and 'Zweitversuch' (second attempt). 'Erstversuch' (first attempt) and 'Zweitversuch' (second attempt).
.* will accept any text, you can add it at the start of the expression .+ will accept any text, you can add it at the start of the expression
(top of page) to see the whole line in the menu 'List' (bottom right). (top of page)
to see the whole line in the menu 'List' (bottom right).
You should find approximately 5 students. You should find approximately 5 students.
Good Luck Good Luck
""", "de": """ """
Re: AW: Studierendenabfrage
von: Prüfungsverwaltung
---------
Hallo,
Zur angefragten Prüfung gibt es leider noch keine Datenbank,
daher unten angefügt unsere Notizen aus Prüfungsakten und Personendatenbank.
Vielleicht können Sie die ja mit regulären Ausdrücken filtern.
Das funktioniert wie normale Text-Suche, nur etwas flexibler:
(Erst|Zweit)versuch z.B. würde sowohl 'Erstversuch'
als auch 'Zweitversuch' markieren.
.* akzeptiert alle Zeichen, das können Sie an die 'Expression'
(oben auf der Seite) vorn anfügen,
um im Menü 'List' unten rechts den Anfang der Zeile zu sehen.
Sie sollten etwa 5 Studierende finden.
Viel Spaß
""", "en": """
Re: AW: Student data request
from: Exam management
---------
Hi,
there is no database for this exam, so I added our digitized notes below .
Maybe you can filter it with regular expressions?
They are like normal text-search but more flexible:
E.g.: /(first|second) attempt/ would select both:
'first attempt' and 'second attempt'.
.* will accept any text, you can add it at the start of the expression
(top of page) to see the whole line in the menu 'List' (bottom right).
You should find approximately 5 students.
Good Luck
"""}
# fünf Tatverdächtige # fünf Tatverdächtige
# Uhrzeiten, siehe Infos von Verantwortlichen # Uhrzeiten, siehe Infos von Verantwortlichen
# Groß-Klein-Schreibung # Groß-Klein-Schreibung
date = "06.06.2024" date = "05.06.2024"
hidden_data = [ hidden_data = [
"Anna Bartel: Zweitversuch nicht bestanden.\n" "Anna Bartel: Zweitversuch nicht bestanden.\n"
"Anna Bartel: second attempt not passed.", "Anna Bartel: second attempt not passed.",
@ -106,16 +68,16 @@ hidden_data = [
"Dennis Meier: 2nd attempt not passed.", "Dennis Meier: 2nd attempt not passed.",
"Elisa Menniz: Zweitversuch nicht bestanden.\n" "Elisa Menniz: Zweitversuch nicht bestanden.\n"
"Elisa Menniz: second attempt not passed.", "Elisa Menniz: second attempt not passed.",
f"Anna Bartel: Prüfung um 13:00.\n" f"Anna Bartel: Prüfung am {date} um 13:00.\n"
f"Anna Bartel: exam, 13:00.", f"Anna Bartel: exam on {date}, 13:00.",
f"Boris Parsch: Prüfung um 14:00.\n" f"Boris Parsch: Prüfung am {date} um 14:00.\n"
f"Boris Parsch: exam, 14:00.", f"Boris Parsch: exam on {date}, 14:00.",
f"Charlotte Winter: Prüfung um 13:30.\n" f"Charlotte Winter: Prüfung am {date} um 13:30.\n"
f"Charlotte Winter: exam, 13:30.", f"Charlotte Winter: exam on {date}, 13:30.",
f"Dennis Meier: Prüfung um 10:00.\n" f"Dennis Meier: Prüfung am {date} um 10:00.\n"
f"Dennis Meier: exam, 10:00.", f"Dennis Meier: exam on {date}, 10:00.",
f"Elisa Menniz: Prüfung um 14:30.\n" f"Elisa Menniz: Prüfung am {date} um 14:30.\n"
f"Elisa Menniz: exam, 14:30.", f"Elisa Menniz: exam on {date}, 14:30.",
f"Anna Bartel: blaue Augen.\n" f"Anna Bartel: blaue Augen.\n"
f"Anna Bartel: blue eyes.", f"Anna Bartel: blue eyes.",
f"Boris Parsch: blaue Augen.\n" f"Boris Parsch: blaue Augen.\n"
@ -143,7 +105,7 @@ network = Network(
), ),
hat_den = Choice( hat_den = Choice(
versuch = [": ",], versuch = [": ",],
prüfungszeit = [(f": Prüfung um ", f": exam, ")], prüfungszeit = [(f": Prüfung am {date} um ", f": exam on {date}, ")],
augenfarbe = [": ",], augenfarbe = [": ",],
), ),
augenfarbe = Choice( augenfarbe = Choice(
@ -200,12 +162,12 @@ network = Network(
), ),
) )
def generate_text(number_of_lines = 200, language = None): def pop_hidden_data():
""" language can be None (both), "en" or "de". global hidden_data
""" index = randint(0, len(hidden_data) - 1)
local_hidden_data = hidden_data[:] return hidden_data.pop(index)
do_german = not language or language == "de"
do_english = not language or language == "en" def generate_text(number_of_lines = 200):
result = "" result = ""
for i in range(number_of_lines): for i in range(number_of_lines):
emissions, _ = network.choose() emissions, _ = network.choose()
@ -219,14 +181,10 @@ def generate_text(number_of_lines = 200, language = None):
case both: case both:
german += both german += both
english += both english += both
if do_german: result += german + "\n" result += german + "\n"
if do_english: result += english + "\n" result += english + "\n"
if random() < len(local_hidden_data) / (number_of_lines - i): if random() < len(hidden_data) / (number_of_lines - i):
index = randint(0, len(local_hidden_data) - 1) result += pop_hidden_data() + "\n"
hidden_line = local_hidden_data.pop(index)
german, english = hidden_line.split("\n")
if do_german: result += german + "\n"
if do_english: result += english + "\n"
return result return result
def read_template(filename = "./template.html"): def read_template(filename = "./template.html"):
@ -239,11 +197,10 @@ def write_index(text, filename = "./deploy/index.html"):
def main(): def main():
template = read_template() template = read_template()
for language in ["de", "en"]: generated = generate_text()
generated = generate_text(language = language) generated = greeting + "\n" + generated
generated = greeting[language] + "\n" + generated
text = template.replace("<replace with text>", generated) text = template.replace("<replace with text>", generated)
write_index(text, filename = f"./deploy/{language}/index.html") write_index(text)
if __name__ == "__main__": if __name__ == "__main__":
main() main()