Renommage des modèles pour les européennes

This commit is contained in:
2024-06-18 14:30:14 +02:00
parent 43862f4408
commit ac0b5e5262
9 changed files with 422 additions and 393 deletions

View File

@ -6,16 +6,14 @@ from sqlalchemy.orm import Session
from tqdm import tqdm
from nupes.models.geographie import Region, Departement, Commune, Circonscription, BureauVote
from nupes.models.europeennes2024 import Bloc, Nuance, Liste, \
ResultatsFrance, ResultatsRegion, ResultatsDepartement, ResultatsCommune, \
ResultatsCirconscription, ResultatsBureauVote
from nupes.models.europeennes2024 import *
DATA_DIR = Path(__file__).parent.parent.parent / 'data'
def exporter_listes(engine: Engine, verbose: bool = False) -> None:
with Session(engine) as session:
blocs = session.execute(select(Bloc)).scalars().all()
blocs = session.execute(select(BlocEuropeennes2024)).scalars().all()
blocs_json = []
for bloc in blocs:
@ -29,7 +27,7 @@ def exporter_listes(engine: Engine, verbose: bool = False) -> None:
with file.open('w') as f:
json.dump(blocs_json, f)
nuances = session.execute(select(Nuance)).scalars().all()
nuances = session.execute(select(NuanceEuropeennes2024)).scalars().all()
nuances_json = []
for nuance in nuances:
@ -43,7 +41,7 @@ def exporter_listes(engine: Engine, verbose: bool = False) -> None:
with file.open('w') as f:
json.dump(nuances_json, f)
listes = session.execute(select(Liste)).scalars().all()
listes = session.execute(select(ListeEuropeennes2024)).scalars().all()
listes_json = []
for liste in listes:
@ -67,9 +65,9 @@ def exporter_listes(engine: Engine, verbose: bool = False) -> None:
def exporter_resultats_france(engine: Engine, verbose: bool = False) -> None:
with Session(engine) as session:
resultats_france = session.execute(select(ResultatsFrance)).scalar_one_or_none()
resultats_france = session.execute(select(ResultatsFranceEuropeennes2024)).scalar_one_or_none()
if not resultats_france:
resultats_france = ResultatsFrance()
resultats_france = ResultatsFranceEuropeennes2024()
session.add(resultats_france)
resultats_dict = {
@ -117,11 +115,12 @@ def exporter_resultats_regions(engine: Engine, verbose: bool = False) -> None:
.scalars().all()]}
regions_json.append(region_json)
resultats_region = session.execute(select(ResultatsRegion).filter_by(region_id=region.code_insee)) \
.scalar_one_or_none()
resultats_region = session.execute(select(ResultatsRegionEuropeennes2024)
.filter_by(region_id=region.code_insee)).scalar_one_or_none()
if not resultats_region:
resultats_france = session.execute(select(ResultatsFrance)).scalar_one()
resultats_region = ResultatsRegion(region_id=region.code_insee, resultats_france_id=resultats_france.id)
resultats_france = session.execute(select(ResultatsFranceEuropeennes2024)).scalar_one()
resultats_region = ResultatsRegionEuropeennes2024(region_id=region.code_insee,
resultats_france_id=resultats_france.id)
session.add(resultats_region)
resultats_dict = {
@ -171,12 +170,13 @@ def exporter_resultats_departements(engine: Engine, verbose: bool = False) -> No
departements_json.append(departement_json)
resultats_departement = session.execute(
select(ResultatsDepartement).filter_by(dpt_id=departement.code_insee)).scalar_one_or_none()
select(ResultatsDepartementEuropeennes2024)
.filter_by(dpt_id=departement.code_insee)).scalar_one_or_none()
if not resultats_departement:
resultats_region = session.execute(select(ResultatsRegion)
resultats_region = session.execute(select(ResultatsRegionEuropeennes2024)
.filter_by(region_id=departement.region_code)).scalar_one()
resultats_departement = ResultatsDepartement(dpt_id=departement.code_insee,
resultats_region_id=resultats_region.id)
resultats_departement = ResultatsDepartementEuropeennes2024(dpt_id=departement.code_insee,
resultats_region_id=resultats_region.id)
session.add(resultats_departement)
resultats_dict = {
@ -225,12 +225,14 @@ def exporter_resultats_circonscriptions(engine: Engine, verbose: bool = False) -
circonscriptions_json.append(circonscription_json)
resultats_circonscription = session.execute(
select(ResultatsCirconscription).filter_by(circo_id=circonscription.id)).scalar_one_or_none()
select(ResultatsCirconscriptionEuropeennes2024)
.filter_by(circo_id=circonscription.id)).scalar_one_or_none()
if not resultats_circonscription:
resultats_departement = session.execute(select(ResultatsDepartement)
.filter_by(dpt_id=circonscription.departement_code)).scalar_one()
resultats_circonscription = ResultatsCirconscription(circo_id=circonscription.id,
resultats_departement_id=resultats_departement.id)
resultats_departement = session.execute(select(ResultatsDepartementEuropeennes2024)
.filter_by(dpt_id=circonscription.departement_code)) \
.scalar_one()
resultats_circonscription = ResultatsCirconscriptionEuropeennes2024(
circo_id=circonscription.id, resultats_departement_id=resultats_departement.id)
session.add(resultats_circonscription)
resultats_dict = {
@ -280,12 +282,12 @@ def exporter_resultats_communes(engine: Engine, verbose: bool = False) -> None:
communes_json.append(commune_json)
resultats_commune = session.execute(
select(ResultatsCommune).filter_by(commune_id=commune.code_insee)).scalar_one_or_none()
select(ResultatsCommuneEuropeennes2024).filter_by(commune_id=commune.code_insee)).scalar_one_or_none()
if not resultats_commune:
resultats_departement = session.execute(select(ResultatsDepartement)
resultats_departement = session.execute(select(ResultatsDepartementEuropeennes2024)
.filter_by(dpt_id=commune.departement_code)).scalar_one()
resultats_commune = ResultatsCommune(commune_id=commune.code_insee,
resultats_dpt_id=resultats_departement.id)
resultats_commune = ResultatsCommuneEuropeennes2024(commune_id=commune.code_insee,
resultats_dpt_id=resultats_departement.id)
session.add(resultats_commune)
resultats_dict = {
@ -335,12 +337,12 @@ def exporter_resultats_bureaux_vote(engine: Engine, verbose: bool = False) -> No
bureaux_vote_json.append(bureau_vote_json)
resultats_bureau_vote = session.execute(
select(ResultatsBureauVote).filter_by(bv_id=bureau_vote.id)).scalar_one_or_none()
select(ResultatsBureauVoteEuropeennes2024).filter_by(bv_id=bureau_vote.id)).scalar_one_or_none()
if not resultats_bureau_vote:
resultats_commune = session.execute(select(ResultatsCommune)
resultats_commune = session.execute(select(ResultatsCommuneEuropeennes2024)
.filter_by(commune_id=bureau_vote.commune_code)).scalar_one()
resultats_bureau_vote = ResultatsBureauVote(bv_id=bureau_vote.id,
resultats_commune_id=resultats_commune.id)
resultats_bureau_vote = ResultatsBureauVoteEuropeennes2024(bv_id=bureau_vote.id,
resultats_commune_id=resultats_commune.id)
session.add(resultats_bureau_vote)
resultats_dict = {

View File

@ -5,7 +5,8 @@ from sqlalchemy import Engine, select
from sqlalchemy.orm import Session
from nupes.cache import get_file
from nupes.models.europeennes2024 import Bloc, Nuance, Liste, Candidat
from nupes.models.europeennes2024 import BlocEuropeennes2024, NuanceEuropeennes2024, ListeEuropeennes2024, \
CandidatEuropeennes2024
def creer_blocs(engine: Engine, verbose: bool = False) -> None:
@ -13,17 +14,17 @@ def creer_blocs(engine: Engine, verbose: bool = False) -> None:
{"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": "#0D378A"},
{"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(Bloc).filter_by(id=bloc_dict["id"])).scalar_one_or_none():
if bloc := session.execute(select(BlocEuropeennes2024).filter_by(id=bloc_dict["id"])).scalar_one_or_none():
bloc.nom = bloc_dict["nom"]
bloc.couleur = bloc_dict["couleur"]
else:
session.add(Bloc(**bloc_dict))
session.add(BlocEuropeennes2024(**bloc_dict))
session.commit()
@ -48,11 +49,12 @@ def creer_nuances(engine: Engine, verbose: bool = False) -> None:
with Session(engine) as session:
for nuance_dict in nuances:
if nuance := session.execute(select(Nuance).filter_by(code=nuance_dict["code"])).scalar_one_or_none():
if nuance := session.execute(select(NuanceEuropeennes2024)
.filter_by(code=nuance_dict["code"])).scalar_one_or_none():
nuance.nom = nuance_dict["nom"]
nuance.couleur = nuance_dict["couleur"]
else:
session.add(Nuance(**nuance_dict))
session.add(NuanceEuropeennes2024(**nuance_dict))
session.commit()
@ -113,14 +115,15 @@ def importer_listes(engine: Engine, verbose: bool = False) -> None:
with Session(engine) as session:
for liste_dict in listes:
if liste := session.execute(select(Liste).filter_by(numero=liste_dict["numero"])).scalar_one_or_none():
if liste := session.execute(select(ListeEuropeennes2024)
.filter_by(numero=liste_dict["numero"])).scalar_one_or_none():
liste.nom = liste_dict["nom"]
liste.nuance_id = liste_dict["nuance_id"]
liste.bloc_id = liste_dict["bloc_id"]
else:
liste = Liste(numero=liste_dict['numero'], nom=liste_dict['nom'],
nom_majuscules=liste_dict['nom'].upper(), nuance_id=liste_dict['nuance_id'],
bloc_id=liste_dict['bloc_id'])
liste = ListeEuropeennes2024(numero=liste_dict['numero'], nom=liste_dict['nom'],
nom_majuscules=liste_dict['nom'].upper(),
nuance_id=liste_dict['nuance_id'], bloc_id=liste_dict['bloc_id'])
session.add(liste)
session.commit()
@ -136,29 +139,30 @@ def importer_candidats(engine: Engine, verbose: bool = False) -> None:
for line in reader:
line: dict[str, str]
numero_panneau = line.get("Numéro de panneau")
liste = session.execute(select(Liste).filter_by(numero=numero_panneau)).scalar_one()
liste = session.execute(select(ListeEuropeennes2024).filter_by(numero=numero_panneau)).scalar_one()
liste.nom_majuscules = line['Libellé de la liste']
if candidat := session.execute(select(Candidat).filter_by(liste_id=liste.id, ordre=line['Ordre'])) \
if candidat := session.execute(select(CandidatEuropeennes2024)
.filter_by(liste_id=liste.id, ordre=line['Ordre'])) \
.scalar_one_or_none():
candidat.liste_id = liste.id
candidat.nom = line['Nom sur le bulletin de vote']
candidat.prenom = line['Prénom sur le bulletin de vote']
candidat.sexe = Candidat.Genre(line['Sexe'])
candidat.sexe = CandidatEuropeennes2024.Genre(line['Sexe'])
candidat.date_naissance = datetime.datetime.strptime(line['Date de naissance'], "%d/%m/%Y").date()
candidat.profession = line['Profession']
candidat.code_personnalite = Candidat.Personnalite(line['Code personnalité'])
candidat.code_personnalite = CandidatEuropeennes2024.Personnalite(line['Code personnalité'])
candidat.sortant = line['Sortant'] == "OUI"
else:
candidat = Candidat(
candidat = CandidatEuropeennes2024(
liste_id=liste.id,
ordre=int(line['Ordre']),
nom=line['Nom sur le bulletin de vote'],
prenom=line['Prénom sur le bulletin de vote'],
sexe=Candidat.Genre(line['Sexe']).name,
sexe=CandidatEuropeennes2024.Genre(line['Sexe']).name,
date_naissance=datetime.datetime.strptime(line['Date de naissance'], "%d/%m/%Y").date(),
profession=line['Profession'],
code_personnalite=Candidat.Personnalite(line['Code personnalité']).name,
code_personnalite=CandidatEuropeennes2024.Personnalite(line['Code personnalité']).name,
sortant=line['Sortant'] == "OUI",
)
session.add(candidat)

View File

@ -1,5 +1,4 @@
import json
from datetime import datetime
from pathlib import Path
import requests

View File

@ -6,10 +6,7 @@ from tqdm import tqdm
from nupes.cache import get_file
from nupes.models import BureauVote, Departement
from nupes.models.europeennes2024 import ResultatsBureauVote, Liste, ResultatsCommune, \
ResultatsDepartement, ResultatsRegion, ResultatsFrance, \
VoixListeBureauVote, VoixListeCommune, VoixListeDepartement, VoixListeRegion, VoixListeFrance, \
ResultatsCirconscription, VoixListeCirconscription
from nupes.models.europeennes2024 import *
def importer_resultats_bv(engine: Engine, verbose: bool = False) -> None:
@ -40,47 +37,52 @@ def importer_resultats_bv(engine: Engine, verbose: bool = False) -> None:
print(f"Bureau de vote {com_code}_{bv_code} non trouvé")
continue
resultats_bv = session.execute(select(ResultatsBureauVote).filter_by(bv_id=bv_id)).scalar_one_or_none()
resultats_bv = session.execute(select(ResultatsBureauVoteEuropeennes2024)
.filter_by(bv_id=bv_id)).scalar_one_or_none()
if not resultats_bv:
resultats_commune = session.execute(select(ResultatsCommune).filter_by(commune_id=com_code)) \
.scalar_one_or_none()
resultats_commune = session.execute(select(ResultatsCommuneEuropeennes2024)
.filter_by(commune_id=com_code)).scalar_one_or_none()
if not resultats_commune:
resultats_dpt = session.execute(select(ResultatsDepartement)
resultats_dpt = session.execute(select(ResultatsDepartementEuropeennes2024)
.filter_by(dpt_id=row['Code département'])) \
.scalar_one_or_none()
if not resultats_dpt:
dpt = session.execute(select(Departement)
.filter_by(code_insee=f"{row['Code département'].zfill(2)}")) \
.scalar_one()
resultats_reg = session.execute(select(ResultatsRegion)
.filter_by(region_id=dpt.region_code)) \
.scalar_one_or_none()
resultats_reg = session.execute(select(ResultatsRegionEuropeennes2024)
.filter_by(region_id=dpt.region_code)).scalar_one_or_none()
if not resultats_reg:
resultats_france = session.execute(select(ResultatsFrance)).scalar_one_or_none()
resultats_france = session.execute(select(ResultatsFranceEuropeennes2024)) \
.scalar_one_or_none()
if not resultats_france:
session.add(ResultatsFrance())
resultats_france = session.execute(select(ResultatsFrance)).scalar_one()
session.add(ResultatsFranceEuropeennes2024())
resultats_france = session.execute(select(ResultatsFranceEuropeennes2024)) \
.scalar_one()
resultats_reg = ResultatsRegion(region_id=str(dpt.region_code),
resultats_france_id=resultats_france.id)
resultats_reg = ResultatsRegionEuropeennes2024(region_id=str(dpt.region_code),
resultats_france_id=resultats_france.id)
session.add(resultats_reg)
resultats_reg = session.execute(select(ResultatsRegion)
resultats_reg = session.execute(select(ResultatsRegionEuropeennes2024)
.filter_by(region_id=dpt.region_code)).scalar_one()
resultats_dpt = ResultatsDepartement(dpt_id=row['Code département'],
resultats_region_id=resultats_reg.id)
resultats_dpt = ResultatsDepartementEuropeennes2024(dpt_id=row['Code département'],
resultats_region_id=resultats_reg.id)
session.add(resultats_dpt)
resultats_dpt = session.execute(select(ResultatsDepartement)
resultats_dpt = session.execute(select(ResultatsDepartementEuropeennes2024)
.filter_by(dpt_id=row['Code département'])).scalar_one()
resultats_commune = ResultatsCommune(commune_id=com_code, resultats_dpt_id=resultats_dpt.id)
resultats_commune = ResultatsCommuneEuropeennes2024(commune_id=com_code,
resultats_dpt_id=resultats_dpt.id)
session.add(resultats_commune)
resultats_commune = session.execute(select(ResultatsCommune).filter_by(commune_id=com_code)) \
.scalar_one()
resultats_commune = session.execute(select(ResultatsCommuneEuropeennes2024)
.filter_by(commune_id=com_code)).scalar_one()
resultats_bv = ResultatsBureauVote(bv_id=bv_id, resultats_commune_id=resultats_commune.id)
resultats_bv = ResultatsBureauVoteEuropeennes2024(bv_id=bv_id,
resultats_commune_id=resultats_commune.id)
session.add(resultats_bv)
resultats_bv = session.execute(select(ResultatsBureauVote).filter_by(bv_id=bv_id)).scalar_one()
resultats_bv = session.execute(select(ResultatsBureauVoteEuropeennes2024)
.filter_by(bv_id=bv_id)).scalar_one()
resultats_bv.inscrits = int(row['Inscrits'])
resultats_bv.votants = int(row['Votants'])
@ -89,13 +91,14 @@ def importer_resultats_bv(engine: Engine, verbose: bool = False) -> None:
resultats_bv.blancs = int(row['Blancs'])
resultats_bv.nuls = int(row['Nuls'])
for liste in session.execute(select(Liste)).scalars().all():
voix_liste_bv = session.execute(select(VoixListeBureauVote)
for liste in session.execute(select(ListeEuropeennes2024)).scalars().all():
voix_liste_bv = session.execute(select(VoixListeBureauVoteEuropeennes2024)
.filter_by(resultats_bureau_vote_id=resultats_bv.id,
liste_id=liste.id)) \
.scalar_one_or_none()
if not voix_liste_bv:
voix_liste_bv = VoixListeBureauVote(resultats_bureau_vote_id=resultats_bv.id, liste_id=liste.id)
voix_liste_bv = VoixListeBureauVoteEuropeennes2024(resultats_bureau_vote_id=resultats_bv.id,
liste_id=liste.id)
session.add(voix_liste_bv)
voix_liste_bv.voix = int(row[f"Voix {liste.id}"])
@ -127,41 +130,40 @@ def importer_resultats_commune(engine: Engine, verbose: bool = False) -> None:
# 3 royaumes à Wallis-et-Futuna, mais un seul résultat de commune
com_code = "98611"
resultats_commune = session.execute(select(ResultatsCommune).filter_by(commune_id=com_code)) \
.scalar_one_or_none()
resultats_commune = session.execute(select(ResultatsCommuneEuropeennes2024)
.filter_by(commune_id=com_code)).scalar_one_or_none()
if not resultats_commune:
resultats_dpt = session.execute(select(ResultatsDepartement)
.filter_by(dpt_id=dpt_code)) \
.scalar_one_or_none()
resultats_dpt = session.execute(select(ResultatsDepartementEuropeennes2024)
.filter_by(dpt_id=dpt_code)).scalar_one_or_none()
if not resultats_dpt:
dpt = session.execute(select(Departement)
.filter_by(code_insee=f"{dpt_code.zfill(2)}")) \
.scalar_one()
resultats_reg = session.execute(select(ResultatsRegion)
.filter_by(region_id=dpt.region_code)) \
.scalar_one_or_none()
.filter_by(code_insee=f"{dpt_code.zfill(2)}")).scalar_one()
resultats_reg = session.execute(select(ResultatsRegionEuropeennes2024)
.filter_by(region_id=dpt.region_code)).scalar_one_or_none()
if not resultats_reg:
resultats_france = session.execute(select(ResultatsFrance)).scalar_one_or_none()
resultats_france = session.execute(select(ResultatsFranceEuropeennes2024)) \
.scalar_one_or_none()
if not resultats_france:
session.add(ResultatsFrance())
resultats_france = session.execute(select(ResultatsFrance)).scalar_one()
session.add(ResultatsFranceEuropeennes2024())
resultats_france = session.execute(select(ResultatsFranceEuropeennes2024)).scalar_one()
resultats_reg = ResultatsRegion(region_id=str(dpt.region_code),
resultats_france_id=resultats_france.id)
resultats_reg = ResultatsRegionEuropeennes2024(region_id=str(dpt.region_code),
resultats_france_id=resultats_france.id)
session.add(resultats_reg)
resultats_reg = session.execute(select(ResultatsRegion)
resultats_reg = session.execute(select(ResultatsRegionEuropeennes2024)
.filter_by(region_id=dpt.region_code)).scalar_one()
resultats_dpt = ResultatsDepartement(dpt_id=dpt_code,
resultats_region_id=resultats_reg.id)
resultats_dpt = ResultatsDepartementEuropeennes2024(dpt_id=dpt_code,
resultats_region_id=resultats_reg.id)
session.add(resultats_dpt)
resultats_dpt = session.execute(select(ResultatsDepartement)
resultats_dpt = session.execute(select(ResultatsDepartementEuropeennes2024)
.filter_by(dpt_id=dpt_code)).scalar_one()
resultats_commune = ResultatsCommune(commune_id=com_code, resultats_dpt_id=resultats_dpt.id)
resultats_commune = ResultatsCommuneEuropeennes2024(commune_id=com_code,
resultats_dpt_id=resultats_dpt.id)
session.add(resultats_commune)
resultats_commune = session.execute(select(ResultatsCommune).filter_by(commune_id=com_code)) \
.scalar_one()
resultats_commune = session.execute(select(ResultatsCommuneEuropeennes2024)
.filter_by(commune_id=com_code)).scalar_one()
resultats_commune.inscrits = int(row['Inscrits'])
resultats_commune.votants = int(row['Votants'])
@ -170,13 +172,14 @@ def importer_resultats_commune(engine: Engine, verbose: bool = False) -> None:
resultats_commune.blancs = int(row['Blancs'])
resultats_commune.nuls = int(row['Nuls'])
for liste in session.execute(select(Liste)).scalars().all():
voix_liste_com = session.execute(select(VoixListeCommune)
for liste in session.execute(select(ListeEuropeennes2024)).scalars().all():
voix_liste_com = session.execute(select(VoixListeCommuneEuropeennes2024)
.filter_by(resultats_commune_id=resultats_commune.id,
liste_id=liste.id)) \
.scalar_one_or_none()
if not voix_liste_com:
voix_liste_com = VoixListeCommune(resultats_commune_id=resultats_commune.id, liste_id=liste.id)
voix_liste_com = VoixListeCommuneEuropeennes2024(resultats_commune_id=resultats_commune.id,
liste_id=liste.id)
session.add(voix_liste_com)
voix_liste_com.voix = int(row[f"Voix {liste.id}"])
@ -200,40 +203,41 @@ def importer_resultats_circo(engine: Engine, verbose: bool = False) -> None:
circo_id = f"{dpt_code.zfill(2)}-{circo_code.zfill(2)}"
resultats_circo = session.execute(select(ResultatsCirconscription).filter_by(circo_id=circo_id)) \
.scalar_one_or_none()
resultats_circo = session.execute(select(ResultatsCirconscriptionEuropeennes2024)
.filter_by(circo_id=circo_id)).scalar_one_or_none()
if not resultats_circo:
resultats_dpt = session.execute(select(ResultatsDepartement).filter_by(dpt_id=dpt_code)) \
.scalar_one_or_none()
resultats_dpt = session.execute(select(ResultatsDepartementEuropeennes2024)
.filter_by(dpt_id=dpt_code)).scalar_one_or_none()
if not resultats_dpt:
dpt = session.execute(select(Departement).filter_by(code_insee=f"{dpt_code.zfill(2)}")) \
.scalar_one()
resultats_reg = session.execute(select(ResultatsRegion)
resultats_reg = session.execute(select(ResultatsRegionEuropeennes2024)
.filter_by(region_id=dpt.region_code)) \
.scalar_one_or_none()
if not resultats_reg:
resultats_france = session.execute(select(ResultatsFrance)).scalar_one_or_none()
resultats_france = session.execute(select(ResultatsFranceEuropeennes2024)) \
.scalar_one_or_none()
if not resultats_france:
session.add(ResultatsFrance())
resultats_france = session.execute(select(ResultatsFrance)).scalar_one()
session.add(ResultatsFranceEuropeennes2024())
resultats_france = session.execute(select(ResultatsFranceEuropeennes2024)).scalar_one()
resultats_reg = ResultatsRegion(region_id=str(dpt.region_code),
resultats_france_id=resultats_france.id)
resultats_reg = ResultatsRegionEuropeennes2024(region_id=str(dpt.region_code),
resultats_france_id=resultats_france.id)
session.add(resultats_reg)
resultats_reg = session.execute(select(ResultatsRegion)
resultats_reg = session.execute(select(ResultatsRegionEuropeennes2024)
.filter_by(region_id=dpt.region_code)).scalar_one()
resultats_dpt = ResultatsDepartement(dpt_id=dpt_code,
resultats_region_id=resultats_reg.id)
resultats_dpt = ResultatsDepartementEuropeennes2024(dpt_id=dpt_code,
resultats_region_id=resultats_reg.id)
session.add(resultats_dpt)
resultats_dpt = session.execute(select(ResultatsDepartement)
resultats_dpt = session.execute(select(ResultatsDepartementEuropeennes2024)
.filter_by(dpt_id=dpt_code)).scalar_one()
resultats_circo = ResultatsCirconscription(circo_id=circo_id,
resultats_departement_id=resultats_dpt.id)
resultats_circo = ResultatsCirconscriptionEuropeennes2024(circo_id=circo_id,
resultats_departement_id=resultats_dpt.id)
session.add(resultats_circo)
resultats_circo = session.execute(select(ResultatsCirconscription).filter_by(circo_id=circo_id)) \
.scalar_one()
resultats_circo = session.execute(select(ResultatsCirconscriptionEuropeennes2024)
.filter_by(circo_id=circo_id)).scalar_one()
resultats_circo.inscrits = int(row['Inscrits'])
resultats_circo.votants = int(row['Votants'])
@ -242,14 +246,13 @@ def importer_resultats_circo(engine: Engine, verbose: bool = False) -> None:
resultats_circo.blancs = int(row['Blancs'])
resultats_circo.nuls = int(row['Nuls'])
for liste in session.execute(select(Liste)).scalars().all():
voix_liste_circo = session.execute(select(VoixListeCirconscription)
for liste in session.execute(select(ListeEuropeennes2024)).scalars().all():
voix_liste_circo = session.execute(select(VoixListeCirconscriptionEuropeennes2024)
.filter_by(resultats_circonscription_id=resultats_circo.id,
liste_id=liste.id)) \
.scalar_one_or_none()
liste_id=liste.id)).scalar_one_or_none()
if not voix_liste_circo:
voix_liste_circo = VoixListeCirconscription(resultats_circonscription_id=resultats_circo.id,
liste_id=liste.id)
voix_liste_circo = VoixListeCirconscriptionEuropeennes2024(
resultats_circonscription_id=resultats_circo.id, liste_id=liste.id)
session.add(voix_liste_circo)
voix_liste_circo.voix = int(row[f"Voix {liste.id}"])
@ -270,33 +273,32 @@ def importer_resultats_departement(engine: Engine, verbose: bool = False) -> Non
if dpt_code == "ZX":
dpt_code = "977"
resultats_dpt = session.execute(select(ResultatsDepartement).filter_by(dpt_id=dpt_code)) \
.scalar_one_or_none()
resultats_dpt = session.execute(select(ResultatsDepartementEuropeennes2024)
.filter_by(dpt_id=dpt_code)).scalar_one_or_none()
if not resultats_dpt:
print(f"Département {dpt_code} non trouvé")
dpt = session.execute(select(Departement)
.filter_by(code_insee=f"{dpt_code.zfill(2)}")) \
.scalar_one()
resultats_reg = session.execute(select(ResultatsRegion)
resultats_reg = session.execute(select(ResultatsRegionEuropeennes2024)
.filter_by(region_id=dpt.region_code)) \
.scalar_one_or_none()
if not resultats_reg:
resultats_france = session.execute(select(ResultatsFrance)).scalar_one_or_none()
resultats_france = session.execute(select(ResultatsFranceEuropeennes2024)).scalar_one_or_none()
if not resultats_france:
session.add(ResultatsFrance())
resultats_france = session.execute(select(ResultatsFrance)).scalar_one()
session.add(ResultatsFranceEuropeennes2024())
resultats_france = session.execute(select(ResultatsFranceEuropeennes2024)).scalar_one()
resultats_reg = ResultatsRegion(region_id=str(dpt.region_code),
resultats_france_id=resultats_france.id)
resultats_reg = ResultatsRegionEuropeennes2024(region_id=str(dpt.region_code),
resultats_france_id=resultats_france.id)
session.add(resultats_reg)
resultats_reg = session.execute(select(ResultatsRegion)
resultats_reg = session.execute(select(ResultatsRegionEuropeennes2024)
.filter_by(region_id=dpt.region_code)).scalar_one()
resultats_dpt = ResultatsDepartement(dpt_id=dpt_code,
resultats_region_id=resultats_reg.id)
resultats_dpt = ResultatsDepartementEuropeennes2024(dpt_id=dpt_code,
resultats_region_id=resultats_reg.id)
session.add(resultats_dpt)
resultats_dpt = session.execute(select(ResultatsDepartement).filter_by(dpt_id=dpt_code)) \
.scalar_one()
resultats_dpt = session.execute(select(ResultatsDepartementEuropeennes2024)
.filter_by(dpt_id=dpt_code)).scalar_one()
resultats_dpt.inscrits = int(row['Inscrits'])
resultats_dpt.votants = int(row['Votants'])
@ -305,14 +307,14 @@ def importer_resultats_departement(engine: Engine, verbose: bool = False) -> Non
resultats_dpt.blancs = int(row['Blancs'])
resultats_dpt.nuls = int(row['Nuls'])
for liste in session.execute(select(Liste)).scalars().all():
voix_liste_dpt = session.execute(select(VoixListeDepartement)
for liste in session.execute(select(ListeEuropeennes2024)).scalars().all():
voix_liste_dpt = session.execute(select(VoixListeDepartementEuropeennes2024)
.filter_by(resultats_departement_id=resultats_dpt.id,
liste_id=liste.id)) \
.scalar_one_or_none()
if not voix_liste_dpt:
voix_liste_dpt = VoixListeDepartement(resultats_departement_id=resultats_dpt.id,
liste_id=liste.id)
voix_liste_dpt = VoixListeDepartementEuropeennes2024(resultats_departement_id=resultats_dpt.id,
liste_id=liste.id)
session.add(voix_liste_dpt)
voix_liste_dpt.voix = int(row[f"Voix {liste.id}"])
@ -330,20 +332,20 @@ def importer_resultats_region(engine: Engine, verbose: bool = False) -> None:
for row in tqdm(reader, desc="Région", disable=not verbose):
reg_code = row['Code région']
resultats_reg = session.execute(select(ResultatsRegion).filter_by(region_id=reg_code)) \
resultats_reg = session.execute(select(ResultatsRegionEuropeennes2024).filter_by(region_id=reg_code)) \
.scalar_one_or_none()
if not resultats_reg:
resultats_france = session.execute(select(ResultatsFrance)).scalar_one_or_none()
resultats_france = session.execute(select(ResultatsFranceEuropeennes2024)).scalar_one_or_none()
if not resultats_france:
session.add(ResultatsFrance())
resultats_france = session.execute(select(ResultatsFrance)).scalar_one()
session.add(ResultatsFranceEuropeennes2024())
resultats_france = session.execute(select(ResultatsFranceEuropeennes2024)).scalar_one()
resultats_reg = ResultatsRegion(region_id=reg_code,
resultats_france_id=resultats_france.id)
resultats_reg = ResultatsRegionEuropeennes2024(region_id=reg_code,
resultats_france_id=resultats_france.id)
session.add(resultats_reg)
session.commit()
resultats_reg = session.execute(select(ResultatsRegion).filter_by(region_id=reg_code)) \
.scalar_one()
resultats_reg = session.execute(select(ResultatsRegionEuropeennes2024)
.filter_by(region_id=reg_code)).scalar_one()
resultats_reg.inscrits = int(row['Inscrits'])
resultats_reg.votants = int(row['Votants'])
@ -352,13 +354,14 @@ def importer_resultats_region(engine: Engine, verbose: bool = False) -> None:
resultats_reg.blancs = int(row['Blancs'])
resultats_reg.nuls = int(row['Nuls'])
for liste in session.execute(select(Liste)).scalars().all():
voix_liste_reg = session.execute(select(VoixListeRegion)
for liste in session.execute(select(ListeEuropeennes2024)).scalars().all():
voix_liste_reg = session.execute(select(VoixListeRegionEuropeennes2024)
.filter_by(resultats_region_id=resultats_reg.id,
liste_id=liste.id)) \
.scalar_one_or_none()
if not voix_liste_reg:
voix_liste_reg = VoixListeRegion(resultats_region_id=resultats_reg.id, liste_id=liste.id)
voix_liste_reg = VoixListeRegionEuropeennes2024(resultats_region_id=resultats_reg.id,
liste_id=liste.id)
session.add(voix_liste_reg)
voix_liste_reg.voix = int(row[f"Voix {liste.id}"])
@ -368,7 +371,7 @@ def importer_resultats_region(engine: Engine, verbose: bool = False) -> None:
def calculer_resultats_france(engine: Engine, verbose: bool = False) -> None:
with Session(engine) as session:
resultats_france = session.execute(select(ResultatsFrance)).scalar_one()
resultats_france = session.execute(select(ResultatsFranceEuropeennes2024)).scalar_one()
resultats_france.inscrits = 0
resultats_france.votants = 0
@ -378,10 +381,11 @@ def calculer_resultats_france(engine: Engine, verbose: bool = False) -> None:
resultats_france.nuls = 0
for voix_liste_france in session.execute(
select(VoixListeFrance).filter_by(resultats_france_id=resultats_france.id)).scalars().all():
select(VoixListeFranceEuropeennes2024)
.filter_by(resultats_france_id=resultats_france.id)).scalars().all():
voix_liste_france.voix = 0 # Réinitialisation des voix
for resultats_dpt in session.execute(select(ResultatsDepartement)).scalars().all():
for resultats_dpt in session.execute(select(ResultatsDepartementEuropeennes2024)).scalars().all():
resultats_france.inscrits += resultats_dpt.inscrits
resultats_france.votants += resultats_dpt.votants
resultats_france.abstentions += resultats_dpt.abstentions
@ -389,16 +393,18 @@ def calculer_resultats_france(engine: Engine, verbose: bool = False) -> None:
resultats_france.blancs += resultats_dpt.blancs
resultats_france.nuls += resultats_dpt.nuls
for voix_liste_dpt in session.execute(select(VoixListeDepartement)
for voix_liste_dpt in session.execute(select(VoixListeDepartementEuropeennes2024)
.filter_by(resultats_departement_id=resultats_dpt.id)) \
.scalars().all():
if voix_liste_france := session.execute(
select(VoixListeFrance).filter_by(resultats_france_id=resultats_france.id,
liste_id=voix_liste_dpt.liste_id)).scalar_one_or_none():
select(VoixListeFranceEuropeennes2024)
.filter_by(resultats_france_id=resultats_france.id,
liste_id=voix_liste_dpt.liste_id)).scalar_one_or_none():
voix_liste_france.voix += voix_liste_dpt.voix
else:
session.add(VoixListeFrance(resultats_france_id=resultats_france.id,
liste_id=voix_liste_dpt.liste_id, voix=voix_liste_dpt.voix))
session.add(VoixListeFranceEuropeennes2024(resultats_france_id=resultats_france.id,
liste_id=voix_liste_dpt.liste_id,
voix=voix_liste_dpt.voix))
session.commit()

View File

@ -6,8 +6,8 @@ from sqlalchemy.orm import Session
from tqdm import tqdm
from nupes.cache import get_file
from nupes.models.europeennes2024 import ResultatsFrance, ResultatsRegion, ResultatsDepartement, ResultatsCommune, \
VoixListeFrance, VoixListeRegion, VoixListeDepartement, VoixListeCommune, Liste
from nupes.models.europeennes2024 import ResultatsFranceEuropeennes2024, ResultatsRegionEuropeennes2024, ResultatsDepartementEuropeennes2024, ResultatsCommuneEuropeennes2024, \
VoixListeFranceEuropeennes2024, VoixListeRegionEuropeennes2024, VoixListeDepartementEuropeennes2024, VoixListeCommuneEuropeennes2024, ListeEuropeennes2024
from nupes.models.geographie import Region, Departement, Commune
BASE_URL = "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique"
@ -23,7 +23,7 @@ def importer_resultats_france(engine: Engine, verbose: bool = False) -> None:
return
with Session(engine) as session:
if resultats_france := session.execute(select(ResultatsFrance)).scalar_one_or_none():
if resultats_france := session.execute(select(ResultatsFranceEuropeennes2024)).scalar_one_or_none():
resultats_france.inscrits = resultats["inscrits"]
resultats_france.abstentions = resultats["abstentions"]
resultats_france.votants = resultats["votants"]
@ -31,7 +31,7 @@ def importer_resultats_france(engine: Engine, verbose: bool = False) -> None:
resultats_france.nuls = resultats["nuls"]
resultats_france.exprimes = resultats["exprimes"]
else:
resultats_france = ResultatsFrance(
resultats_france = ResultatsFranceEuropeennes2024(
inscrits=resultats["inscrits"],
abstentions=resultats["abstentions"],
votants=resultats["votants"],
@ -43,13 +43,13 @@ def importer_resultats_france(engine: Engine, verbose: bool = False) -> None:
for voix_liste in resultats["resultats_par_liste"]:
if voix_liste_france := session.execute(
select(VoixListeFrance).join(Liste).filter_by(nom_majuscules=voix_liste["nom"].upper())
select(VoixListeFranceEuropeennes2024).join(ListeEuropeennes2024).filter_by(nom_majuscules=voix_liste["nom"].upper())
).scalar_one_or_none():
voix_liste_france.voix = voix_liste["voix"]
else:
liste = session.execute(select(Liste).filter_by(nom_majuscules=voix_liste["nom"].upper())).scalar_one()
voix_liste_france = VoixListeFrance(liste_id=liste.id, resultats_france_id=resultats_france.id,
voix=voix_liste["voix"])
liste = session.execute(select(ListeEuropeennes2024).filter_by(nom_majuscules=voix_liste["nom"].upper())).scalar_one()
voix_liste_france = VoixListeFranceEuropeennes2024(liste_id=liste.id, resultats_france_id=resultats_france.id,
voix=voix_liste["voix"])
session.add(voix_liste_france)
session.commit()
@ -76,7 +76,7 @@ def importer_resultats_regions(engine: Engine, verbose: bool = False) -> None:
if not resultats:
continue
if resultats_region := session.execute(select(ResultatsRegion).filter_by(region_id=reg_code)) \
if resultats_region := session.execute(select(ResultatsRegionEuropeennes2024).filter_by(region_id=reg_code)) \
.scalar_one_or_none():
resultats_region.inscrits = resultats["inscrits"]
resultats_region.abstentions = resultats["abstentions"]
@ -85,8 +85,8 @@ def importer_resultats_regions(engine: Engine, verbose: bool = False) -> None:
resultats_region.nuls = resultats["nuls"]
resultats_region.exprimes = resultats["exprimes"]
else:
resultats_france = session.execute(select(ResultatsFrance)).scalar_one()
resultats_region = ResultatsRegion(
resultats_france = session.execute(select(ResultatsFranceEuropeennes2024)).scalar_one()
resultats_region = ResultatsRegionEuropeennes2024(
region_id=reg_code,
resultats_france_id=resultats_france.id,
inscrits=resultats["inscrits"],
@ -100,14 +100,14 @@ def importer_resultats_regions(engine: Engine, verbose: bool = False) -> None:
for voix_liste in resultats["resultats_par_liste"]:
if voix_liste_region := session.execute(
select(VoixListeRegion).join(Liste).filter_by(nom_majuscules=voix_liste["nom"].upper())
select(VoixListeRegionEuropeennes2024).join(ListeEuropeennes2024).filter_by(nom_majuscules=voix_liste["nom"].upper())
).scalar_one_or_none():
voix_liste_region.voix = voix_liste["voix"]
else:
liste = session.execute(select(Liste).filter_by(nom_majuscules=voix_liste["nom"].upper())) \
liste = session.execute(select(ListeEuropeennes2024).filter_by(nom_majuscules=voix_liste["nom"].upper())) \
.scalar_one()
voix_liste_region = VoixListeRegion(liste_id=liste.id, resultats_region_id=resultats_region.id,
voix=voix_liste["voix"])
voix_liste_region = VoixListeRegionEuropeennes2024(liste_id=liste.id, resultats_region_id=resultats_region.id,
voix=voix_liste["voix"])
session.add(voix_liste_region)
session.commit()
@ -143,7 +143,7 @@ def importer_resultats_departements(engine: Engine, verbose: bool = False) -> No
continue
if resultats_departement := session.execute(
select(ResultatsDepartement).filter_by(dpt_id=dpt.code_insee)).scalar_one_or_none():
select(ResultatsDepartementEuropeennes2024).filter_by(dpt_id=dpt.code_insee)).scalar_one_or_none():
resultats_departement.inscrits = resultats["inscrits"]
resultats_departement.abstentions = resultats["abstentions"]
resultats_departement.votants = resultats["votants"]
@ -151,10 +151,10 @@ def importer_resultats_departements(engine: Engine, verbose: bool = False) -> No
resultats_departement.nuls = resultats["nuls"]
resultats_departement.exprimes = resultats["exprimes"]
else:
resultats_region = session.execute(select(ResultatsRegion).filter_by(region_id=dpt.region_code)) \
resultats_region = session.execute(select(ResultatsRegionEuropeennes2024).filter_by(region_id=dpt.region_code)) \
.scalar_one_or_none()
resultats_departement = ResultatsDepartement(
resultats_departement = ResultatsDepartementEuropeennes2024(
dpt_id=dpt.code_insee,
resultats_region_id=resultats_region.id if resultats_region else None,
inscrits=resultats["inscrits"],
@ -168,15 +168,15 @@ def importer_resultats_departements(engine: Engine, verbose: bool = False) -> No
for voix_liste in resultats["resultats_par_liste"]:
if voix_liste_departement := session.execute(
select(VoixListeDepartement).join(Liste).filter_by(nom_majuscules=voix_liste["nom"].upper())
select(VoixListeDepartementEuropeennes2024).join(ListeEuropeennes2024).filter_by(nom_majuscules=voix_liste["nom"].upper())
).scalar_one_or_none():
voix_liste_departement.voix = voix_liste["voix"]
else:
liste = session.execute(select(Liste).filter_by(nom_majuscules=voix_liste["nom"].upper())) \
liste = session.execute(select(ListeEuropeennes2024).filter_by(nom_majuscules=voix_liste["nom"].upper())) \
.scalar_one()
voix_liste_departement = VoixListeDepartement(liste_id=liste.id,
resultats_departement_id=resultats_departement.id,
voix=voix_liste["voix"])
voix_liste_departement = VoixListeDepartementEuropeennes2024(liste_id=liste.id,
resultats_departement_id=resultats_departement.id,
voix=voix_liste["voix"])
session.add(voix_liste_departement)
session.commit()
@ -223,7 +223,7 @@ def importer_resultats_communes(engine: Engine, verbose: bool = False) -> None:
continue
if resultats_commune := session.execute(
select(ResultatsCommune).filter_by(commune_id=com_code)).scalar_one_or_none():
select(ResultatsCommuneEuropeennes2024).filter_by(commune_id=com_code)).scalar_one_or_none():
resultats_commune.inscrits = resultats["inscrits"]
resultats_commune.abstentions = resultats["abstentions"]
resultats_commune.votants = resultats["votants"]
@ -231,9 +231,9 @@ def importer_resultats_communes(engine: Engine, verbose: bool = False) -> None:
resultats_commune.nuls = resultats["nuls"]
resultats_commune.exprimes = resultats["exprimes"]
else:
resultats_departement = session.execute(select(ResultatsDepartement).filter_by(dpt_id=dpt_code)) \
resultats_departement = session.execute(select(ResultatsDepartementEuropeennes2024).filter_by(dpt_id=dpt_code)) \
.scalar_one_or_none()
resultats_commune = ResultatsCommune(
resultats_commune = ResultatsCommuneEuropeennes2024(
commune_id=com_code,
resultats_dpt_id=resultats_departement.id if resultats_departement else None,
inscrits=resultats["inscrits"],
@ -247,14 +247,14 @@ def importer_resultats_communes(engine: Engine, verbose: bool = False) -> None:
for voix_liste in resultats["resultats_par_liste"]:
if voix_liste_commune := session.execute(
select(VoixListeCommune).join(Liste).filter_by(nom_majuscules=voix_liste["nom"].upper())
select(VoixListeCommuneEuropeennes2024).join(ListeEuropeennes2024).filter_by(nom_majuscules=voix_liste["nom"].upper())
).scalar_one_or_none():
voix_liste_commune.voix = voix_liste["voix"]
else:
liste = session.execute(select(Liste).filter_by(nom_majuscules=voix_liste["nom"].upper())) \
liste = session.execute(select(ListeEuropeennes2024).filter_by(nom_majuscules=voix_liste["nom"].upper())) \
.scalar_one()
voix_liste_commune = VoixListeCommune(liste_id=liste.id, resultats_commune_id=resultats_commune.id,
voix=voix_liste["voix"])
voix_liste_commune = VoixListeCommuneEuropeennes2024(liste_id=liste.id, resultats_commune_id=resultats_commune.id,
voix=voix_liste["voix"])
session.add(voix_liste_commune)
session.commit()