aboutsummaryrefslogtreecommitdiff
path: root/scripts/erzeuge_jahrgang.py
blob: 806a7ec57674ff1de220bb9b6f19b99cc298aebd (plain)
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()