74 lines
3.7 KiB
Python
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)
|