#!/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()