import csv import datetime from sqlalchemy import Engine, select from sqlalchemy.orm import Session from nupes.cache import get_file from nupes.models.legislatives2024 import BlocLegislatives2024, NuanceLegislatives2024, CandidatLegislatives2024 def creer_blocs(engine: Engine, verbose: bool = False) -> None: blocs = [ {"id": 1, "nom": "Gauche", "couleur": "#BB1840"}, {"id": 2, "nom": "Droite libérale", "couleur": "#FFEB00"}, {"id": 3, "nom": "Droite conservatrice", "couleur": "#0066CC"}, {"id": 4, "nom": "Extrême droite", "couleur": "#404040"}, {"id": 5, "nom": "Autres", "couleur": "#DCBFA3"} ] with Session(engine) as session: for bloc_dict in blocs: if bloc := session.execute(select(BlocLegislatives2024).filter_by(id=bloc_dict["id"])).scalar_one_or_none(): bloc.nom = bloc_dict["nom"] bloc.couleur = bloc_dict["couleur"] else: session.add(BlocLegislatives2024(**bloc_dict)) session.commit() def creer_nuances(engine: Engine, verbose: bool = False) -> None: nuances = [ {"code": "EXG", "nom": "Extrême gauche", "couleur": "#BB0000", "bloc": 1}, {"code": "COM", "nom": "Parti communiste français", "couleur": "#DD0000", "bloc": 1}, {"code": "FI", "nom": "La France insoumise", "couleur": "#CC2443", "bloc": 1}, {"code": "SOC", "nom": "Parti socialiste", "couleur": "#FF8080", "bloc": 1}, {"code": "UG", "nom": "Union de la gauche", "couleur": "#E4032E", "bloc": 1}, {"code": "PRG", "nom": "Parti radical de gauche", "couleur": "#FFD1DC", "bloc": 1}, {"code": "VEC", "nom": "Les Écologistes", "couleur": "#00C000", "bloc": 1}, {"code": "DVG", "nom": "Divers gauche", "couleur": "#FFC0C0", "bloc": 1}, {"code": "ECO", "nom": "Écologistes", "couleur": "#77FF77", "bloc": 5}, {"code": "REG", "nom": "Régionalistes", "couleur": "#DCBFA3", "bloc": 5}, {"code": "DIV", "nom": "Divers", "couleur": "#DCDCDC", "bloc": 5}, {"code": "REN", "nom": "Renaissance", "couleur": "#FFEB00", "bloc": 2}, {"code": "ENS", "nom": "Ensemble ! (Majorité présidentielle)", "couleur": "#45B3AB", "bloc": 2}, {"code": "MDM", "nom": "Modem", "couleur": "#FF9900", "bloc": 2}, {"code": "HOR", "nom": "Horizons", "couleur": "#0001B8", "bloc": 2}, {"code": "DVC", "nom": "Divers centre", "couleur": "#FAC577", "bloc": 2}, {"code": "UDI", "nom": "Union des Démocrates et Indépendants", "couleur": "#00FFFF", "bloc": 3}, {"code": "LR", "nom": "Les Républicains", "couleur": "#0066CC", "bloc": 3}, {"code": "DVD", "nom": "Divers droite", "couleur": "#26C4EC", "bloc": 3}, {"code": "DSV", "nom": "Droite souverainiste", "couleur": "#8040C0", "bloc": 4}, {"code": "RN", "nom": "Rassemblement national", "couleur": "#0D378A", "bloc": 4}, {"code": "REC", "nom": "Reconquête !", "couleur": "#404040", "bloc": 4}, {"code": "EXD", "nom": "Extrême droite", "couleur": "#404040", "bloc": 4}, {"code": "UXD", "nom": "Union de l'extrême droite", "couleur": "#404040", "bloc": 4}, ] with Session(engine) as session: for nuance_dict in nuances: if nuance := session.execute(select(NuanceLegislatives2024) .filter_by(code=nuance_dict["code"])).scalar_one_or_none(): nuance.nom = nuance_dict["nom"] nuance.couleur = nuance_dict["couleur"] else: session.add(NuanceLegislatives2024(**nuance_dict)) session.commit() def run(engine: Engine, verbose: bool = False) -> None: creer_blocs(engine, verbose) creer_nuances(engine, verbose)