nupes-elections/nupes/scripts/legislatives2024/import_candidats.py

74 lines
3.7 KiB
Python

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)