aboutsummaryrefslogtreecommitdiff
path: root/scripts/erzeuge_jahrgang.py
blob: 46dc99d47783ca58561458573dc082a708977e93 (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
#!/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, Farbe) VALUES ('{}', {}, '{}', '{}');"

FARBSCHEMAS = {
    "regenbogen":
    ["#de324c", "#f4895f", "#f8e16f", "#95cf92", "#369acc", "#9656a2"],
    "default": ["#36a2eb" for _ in range(6)]
}


def erzeuge_statements(schuljahr: str, klassenstufe: int, bezeichner: str,
                       farbschema: str) -> list[str]:
    """Gib eine Liste an SQL Statements zurück, um alle Klassen eines Jahrgangs zu erzeugen"""
    statements = []
    aktueller_bezeichner = 'a'
    farben = cycle(FARBSCHEMAS[farbschema])

    while aktueller_bezeichner <= bezeichner:
        statement = STATEMENT.format(schuljahr, klassenstufe,
                                     aktueller_bezeichner, next(farben))
        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=["default", "regenbogen"],
                        default="default",
                        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,
                                        args.farbschema):
        print(statement)


if __name__ == '__main__':
    main()