1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
#!/usr/bin/env python3
"""Erzeuge SQL Statements um die Klassen eines Jahrgangs anzulegen"""
import argparse
from itertools import cycle
STATEMENT = "INSERT INTO Klasse (Schuljahr, Jahrgang, Bezeichner) VALUES ('{}', {}, '{}');"
STATEMENT_FARBE = "INSERT INTO Klasse (Schuljahr, Jahrgang, Bezeichner, Farbe) VALUES ('{}', {}, '{}', '{}');"
FARBSCHEMAS = {
"regenbogen":
["#de324c", "#f4895f", "#f8e16f", "#95cf92", "#369acc", "#9656a2"],
}
def erzeuge_statements(schuljahr: str,
klassenstufe: int,
bezeichner: str,
farbschema=None) -> list[str]:
"""Gib eine Liste an SQL Statements zurück, um alle Klassen eines Jahrgangs zu erzeugen"""
statements = []
aktueller_bezeichner = 'a'
if farbschema:
farben = cycle(FARBSCHEMAS[farbschema])
while aktueller_bezeichner <= bezeichner:
if farbschema:
statement = STATEMENT_FARBE.format(schuljahr, klassenstufe,
aktueller_bezeichner,
next(farben))
else:
statement = STATEMENT.format(schuljahr, klassenstufe,
aktueller_bezeichner)
statements.append(statement)
aktueller_bezeichner = chr(ord(aktueller_bezeichner) + 1)
return statements
def main():
"""Erzeuge passenden Statements zu den Kommandozeilen-Parameter"""
parser = argparse.ArgumentParser()
parser.add_argument("--farbschema",
choices=["regenbogen"],
help="Das Farbschema der erzeugten Klassen")
parser.add_argument("schuljahr",
type=str,
help="Das Schuljahr in der Form: yyYY")
parser.add_argument("klassenstufe",
type=int,
help="Die Klassenstufe der zu erzeugenden Klassen")
parser.add_argument("letzter_bezeichner",
type=str,
help="Der letzte alphabetische Bezeichner der Klassen")
args = parser.parse_args()
for statement in erzeuge_statements(args.schuljahr,
args.klassenstufe,
args.letzter_bezeichner,
farbschema=args.farbschema):
print(statement)
if __name__ == '__main__':
main()
|