Compare commits

...

10 commits

Author SHA1 Message Date
AntonObersteiner a3d057d5b0 remove date from texts 2024-06-05 13:58:09 +02:00
AntonObersteiner 742843cc78 use relative path for redirect 2024-06-05 12:59:17 +02:00
AntonObersteiner 6345a765d8 fix translation 2024-06-05 12:49:32 +02:00
AntonObersteiner 428d549b91 use '.*' instead of '.+' in tips 2024-06-05 12:48:01 +02:00
AntonObersteiner c6d2415271 fix data generation: hidden data is local
otherwise, the first data generation emties the data and the second get
none
2024-06-05 12:47:02 +02:00
AntonObersteiner e71e30ce86 do single-language only and link both 2024-06-05 12:42:03 +02:00
AntonObersteiner b4104d1717 reference the single-language version in the greeting 2024-06-05 12:22:41 +02:00
AntonObersteiner 1f52d02dda add english deefault regex and fix in text 2024-06-05 12:19:38 +02:00
AntonObersteiner efd2146962 add german- and english-only versions of greeting 2024-06-05 12:15:25 +02:00
AntonObersteiner 8d3f799ff6 make different language versions 2024-06-05 12:10:15 +02:00
9 changed files with 46275 additions and 34 deletions

2
.gitignore vendored
View file

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

2086
deploy/de/regexr.css Normal file

File diff suppressed because it is too large Load diff

21008
deploy/de/regexr.js Normal file

File diff suppressed because it is too large Load diff

1
deploy/de/regexr.js.map Normal file

File diff suppressed because one or more lines are too long

2086
deploy/en/regexr.css Normal file

File diff suppressed because it is too large Load diff

21008
deploy/en/regexr.js Normal file

File diff suppressed because it is too large Load diff

1
deploy/en/regexr.js.map Normal file

File diff suppressed because one or more lines are too long

8
deploy/index.html Normal file
View file

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

View file

@ -15,11 +15,12 @@ def get_names(filename, pad = " "):
]
return names
greeting = """
greeting = {"": """
Re: AW: Studierendenabfrage
von: Prüfungsverwaltung
---------
Englisch version below.
English-only version at cc.ifsr.de/en, this page is bilingual.
Eine nur auf deutsch formulierte Variante ist unter cc.ifsr.de/de
Hallo,
@ -30,7 +31,7 @@ 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'
.* 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.
@ -39,24 +40,61 @@ Viel Spaß
=== ENGLISCH VERSION ===
Hi,
there is no database for this exam, so I added our digitized notes below,
always with the auto-generated english translation.
Maybe you can filter it with regular expressions?
They are like normal text-search but more flexible:
E.g.: (Erst|Zweit)versuch would select both words:
'Erstversuch' (first attempt) and 'Zweitversuch' (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).
.* 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
"""
""", "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
# Uhrzeiten, siehe Infos von Verantwortlichen
# Groß-Klein-Schreibung
date = "05.06.2024"
date = "06.06.2024"
hidden_data = [
"Anna Bartel: Zweitversuch nicht bestanden.\n"
"Anna Bartel: second attempt not passed.",
@ -68,16 +106,16 @@ hidden_data = [
"Dennis Meier: 2nd attempt not passed.",
"Elisa Menniz: Zweitversuch nicht bestanden.\n"
"Elisa Menniz: second attempt not passed.",
f"Anna Bartel: Prüfung am {date} um 13:00.\n"
f"Anna Bartel: exam on {date}, 13:00.",
f"Boris Parsch: Prüfung am {date} um 14:00.\n"
f"Boris Parsch: exam on {date}, 14:00.",
f"Charlotte Winter: Prüfung am {date} um 13:30.\n"
f"Charlotte Winter: exam on {date}, 13:30.",
f"Dennis Meier: Prüfung am {date} um 10:00.\n"
f"Dennis Meier: exam on {date}, 10:00.",
f"Elisa Menniz: Prüfung am {date} um 14:30.\n"
f"Elisa Menniz: exam on {date}, 14:30.",
f"Anna Bartel: Prüfung um 13:00.\n"
f"Anna Bartel: exam, 13:00.",
f"Boris Parsch: Prüfung um 14:00.\n"
f"Boris Parsch: exam, 14:00.",
f"Charlotte Winter: Prüfung um 13:30.\n"
f"Charlotte Winter: exam, 13:30.",
f"Dennis Meier: Prüfung um 10:00.\n"
f"Dennis Meier: exam, 10:00.",
f"Elisa Menniz: Prüfung um 14:30.\n"
f"Elisa Menniz: exam, 14:30.",
f"Anna Bartel: blaue Augen.\n"
f"Anna Bartel: blue eyes.",
f"Boris Parsch: blaue Augen.\n"
@ -105,7 +143,7 @@ network = Network(
),
hat_den = Choice(
versuch = [": ",],
prüfungszeit = [(f": Prüfung am {date} um ", f": exam on {date}, ")],
prüfungszeit = [(f": Prüfung um ", f": exam, ")],
augenfarbe = [": ",],
),
augenfarbe = Choice(
@ -162,12 +200,12 @@ network = Network(
),
)
def pop_hidden_data():
global hidden_data
index = randint(0, len(hidden_data) - 1)
return hidden_data.pop(index)
def generate_text(number_of_lines = 200):
def generate_text(number_of_lines = 200, language = None):
""" language can be None (both), "en" or "de".
"""
local_hidden_data = hidden_data[:]
do_german = not language or language == "de"
do_english = not language or language == "en"
result = ""
for i in range(number_of_lines):
emissions, _ = network.choose()
@ -181,10 +219,14 @@ def generate_text(number_of_lines = 200):
case both:
german += both
english += both
result += german + "\n"
result += english + "\n"
if random() < len(hidden_data) / (number_of_lines - i):
result += pop_hidden_data() + "\n"
if do_german: result += german + "\n"
if do_english: result += english + "\n"
if random() < len(local_hidden_data) / (number_of_lines - i):
index = randint(0, len(local_hidden_data) - 1)
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
def read_template(filename = "./template.html"):
@ -197,10 +239,11 @@ def write_index(text, filename = "./deploy/index.html"):
def main():
template = read_template()
generated = generate_text()
generated = greeting + "\n" + generated
text = template.replace("<replace with text>", generated)
write_index(text)
for language in ["de", "en"]:
generated = generate_text(language = language)
generated = greeting[language] + "\n" + generated
text = template.replace("<replace with text>", generated)
write_index(text, filename = f"./deploy/{language}/index.html")
if __name__ == "__main__":
main()