Calculs résultats à partir des bureaux de vote
This commit is contained in:
parent
fbbe34518e
commit
c8bae98862
|
@ -6,8 +6,9 @@ from tqdm import tqdm
|
||||||
|
|
||||||
from nupes.cache import get_file
|
from nupes.cache import get_file
|
||||||
from nupes.models import BureauVote, Departement
|
from nupes.models import BureauVote, Departement
|
||||||
from nupes.models.europeennes2024 import ResultatsBureauVote, Liste, VoixListeBureauVote, ResultatsCommune, \
|
from nupes.models.europeennes2024 import ResultatsBureauVote, Liste, ResultatsCommune, \
|
||||||
ResultatsDepartement, ResultatsRegion, ResultatsFrance
|
ResultatsDepartement, ResultatsRegion, ResultatsFrance, \
|
||||||
|
VoixListeBureauVote, VoixListeCommune, VoixListeDepartement, VoixListeRegion, VoixListeFrance
|
||||||
|
|
||||||
|
|
||||||
def importer_resultats_bv(engine: Engine, verbose: bool = False) -> None:
|
def importer_resultats_bv(engine: Engine, verbose: bool = False) -> None:
|
||||||
|
@ -87,11 +88,39 @@ def importer_resultats_bv(engine: Engine, verbose: bool = False) -> None:
|
||||||
|
|
||||||
voix_liste_bv.voix = int(row[f"Voix {liste.id}"])
|
voix_liste_bv.voix = int(row[f"Voix {liste.id}"])
|
||||||
|
|
||||||
session.commit()
|
session.commit()
|
||||||
|
|
||||||
|
|
||||||
def calculer_resultats_commune(engine: Engine, verbose: bool = False) -> None:
|
def calculer_resultats_commune(engine: Engine, verbose: bool = False) -> None:
|
||||||
pass
|
with Session(engine) as session:
|
||||||
|
for resultat_commune in tqdm(session.execute(select(ResultatsCommune)).scalars(), desc="Communes",
|
||||||
|
disable=not verbose):
|
||||||
|
resultats_bv = session.execute(select(ResultatsBureauVote)
|
||||||
|
.filter_by(resultats_commune_id=resultat_commune.id)).scalars().all()
|
||||||
|
resultat_commune.inscrits = sum(r.inscrits for r in resultats_bv)
|
||||||
|
resultat_commune.votants = sum(r.votants for r in resultats_bv)
|
||||||
|
resultat_commune.abstentions = sum(r.abstentions for r in resultats_bv)
|
||||||
|
resultat_commune.exprimes = sum(r.exprimes for r in resultats_bv)
|
||||||
|
resultat_commune.blancs = sum(r.blancs for r in resultats_bv)
|
||||||
|
resultat_commune.nuls = sum(r.nuls for r in resultats_bv)
|
||||||
|
|
||||||
|
for liste in session.execute(select(Liste)).scalars().all():
|
||||||
|
voix_liste = session.execute(select(VoixListeBureauVote).filter_by(liste_id=liste.id)
|
||||||
|
.join(ResultatsBureauVote)
|
||||||
|
.filter_by(resultats_commune_id=resultat_commune.id)) \
|
||||||
|
.scalars().all()
|
||||||
|
voix = sum(v.voix for v in voix_liste)
|
||||||
|
if voix_liste_commune := session.execute(
|
||||||
|
select(VoixListeCommune).filter_by(resultats_commune_id=resultat_commune.id,
|
||||||
|
liste_id=liste.id)).scalar_one_or_none():
|
||||||
|
voix_liste_commune.voix = voix
|
||||||
|
else:
|
||||||
|
voix_liste_commune = VoixListeCommune(resultats_commune_id=resultat_commune.id,
|
||||||
|
liste_id=liste.id,
|
||||||
|
voix=voix)
|
||||||
|
session.add(voix_liste_commune)
|
||||||
|
|
||||||
|
session.commit()
|
||||||
|
|
||||||
|
|
||||||
def calculer_resultats_circo(engine: Engine, verbose: bool = False) -> None:
|
def calculer_resultats_circo(engine: Engine, verbose: bool = False) -> None:
|
||||||
|
@ -99,15 +128,97 @@ def calculer_resultats_circo(engine: Engine, verbose: bool = False) -> None:
|
||||||
|
|
||||||
|
|
||||||
def calculer_resultats_departement(engine: Engine, verbose: bool = False) -> None:
|
def calculer_resultats_departement(engine: Engine, verbose: bool = False) -> None:
|
||||||
pass
|
with Session(engine) as session:
|
||||||
|
for resultat_dpt in tqdm(session.execute(select(ResultatsDepartement)).scalars(), desc="Départements",
|
||||||
|
disable=not verbose):
|
||||||
|
resultats_commune = session.execute(select(ResultatsCommune)
|
||||||
|
.filter_by(resultats_dpt_id=resultat_dpt.id)).scalars().all()
|
||||||
|
resultat_dpt.inscrits = sum(r.inscrits for r in resultats_commune)
|
||||||
|
resultat_dpt.votants = sum(r.votants for r in resultats_commune)
|
||||||
|
resultat_dpt.abstentions = sum(r.abstentions for r in resultats_commune)
|
||||||
|
resultat_dpt.exprimes = sum(r.exprimes for r in resultats_commune)
|
||||||
|
resultat_dpt.blancs = sum(r.blancs for r in resultats_commune)
|
||||||
|
resultat_dpt.nuls = sum(r.nuls for r in resultats_commune)
|
||||||
|
|
||||||
|
for liste in session.execute(select(Liste)).scalars().all():
|
||||||
|
voix_liste = session.execute(select(VoixListeCommune).filter_by(liste_id=liste.id)
|
||||||
|
.join(ResultatsCommune)
|
||||||
|
.filter_by(resultats_dpt_id=resultat_dpt.id)) \
|
||||||
|
.scalars().all()
|
||||||
|
voix = sum(v.voix for v in voix_liste)
|
||||||
|
if voix_liste_dpt := session.execute(select(VoixListeDepartement)
|
||||||
|
.filter_by(resultats_departement_id=resultat_dpt.id,
|
||||||
|
liste_id=liste.id)) \
|
||||||
|
.scalar_one_or_none():
|
||||||
|
voix_liste_dpt.voix = voix
|
||||||
|
else:
|
||||||
|
voix_liste_dpt = VoixListeDepartement(resultats_departement_id=resultat_dpt.id,
|
||||||
|
liste_id=liste.id,
|
||||||
|
voix=voix)
|
||||||
|
session.add(voix_liste_dpt)
|
||||||
|
|
||||||
|
session.commit()
|
||||||
|
|
||||||
|
|
||||||
def calculer_resultats_region(engine: Engine, verbose: bool = False) -> None:
|
def calculer_resultats_region(engine: Engine, verbose: bool = False) -> None:
|
||||||
pass
|
with Session(engine) as session:
|
||||||
|
for resultat_reg in tqdm(session.execute(select(ResultatsRegion)).scalars(), desc="Régions",
|
||||||
|
disable=not verbose):
|
||||||
|
resultats_dpt = session.execute(select(ResultatsDepartement)
|
||||||
|
.filter_by(resultats_region_id=resultat_reg.id)).scalars().all()
|
||||||
|
resultat_reg.inscrits = sum(r.inscrits for r in resultats_dpt)
|
||||||
|
resultat_reg.votants = sum(r.votants for r in resultats_dpt)
|
||||||
|
resultat_reg.abstentions = sum(r.abstentions for r in resultats_dpt)
|
||||||
|
resultat_reg.exprimes = sum(r.exprimes for r in resultats_dpt)
|
||||||
|
resultat_reg.blancs = sum(r.blancs for r in resultats_dpt)
|
||||||
|
resultat_reg.nuls = sum(r.nuls for r in resultats_dpt)
|
||||||
|
|
||||||
|
for liste in session.execute(select(Liste)).scalars().all():
|
||||||
|
voix_liste = session.execute(select(VoixListeDepartement).filter_by(liste_id=liste.id)
|
||||||
|
.join(ResultatsDepartement)
|
||||||
|
.filter_by(resultats_region_id=resultat_reg.id)) \
|
||||||
|
.scalars().all()
|
||||||
|
voix = sum(v.voix for v in voix_liste)
|
||||||
|
if voix_liste_reg := session.execute(select(VoixListeRegion)
|
||||||
|
.filter_by(resultats_region_id=resultat_reg.id,
|
||||||
|
liste_id=liste.id)).scalar_one_or_none():
|
||||||
|
voix_liste_reg.voix = voix
|
||||||
|
else:
|
||||||
|
voix_liste_reg = VoixListeRegion(resultats_region_id=resultat_reg.id,
|
||||||
|
liste_id=liste.id,
|
||||||
|
voix=voix)
|
||||||
|
session.add(voix_liste_reg)
|
||||||
|
|
||||||
|
session.commit()
|
||||||
|
|
||||||
|
|
||||||
def calculer_resultats_national(engine: Engine, verbose: bool = False) -> None:
|
def calculer_resultats_national(engine: Engine, verbose: bool = False) -> None:
|
||||||
pass
|
with Session(engine) as session:
|
||||||
|
resultat_france = session.execute(select(ResultatsFrance)).scalar_one()
|
||||||
|
resultats_reg = session.execute(select(ResultatsRegion)).scalars().all()
|
||||||
|
resultat_france.inscrits = sum(r.inscrits for r in resultats_reg)
|
||||||
|
resultat_france.votants = sum(r.votants for r in resultats_reg)
|
||||||
|
resultat_france.abstentions = sum(r.abstentions for r in resultats_reg)
|
||||||
|
resultat_france.exprimes = sum(r.exprimes for r in resultats_reg)
|
||||||
|
resultat_france.blancs = sum(r.blancs for r in resultats_reg)
|
||||||
|
resultat_france.nuls = sum(r.nuls for r in resultats_reg)
|
||||||
|
|
||||||
|
for liste in session.execute(select(Liste)).scalars().all():
|
||||||
|
voix_liste = session.execute(select(VoixListeRegion).filter_by(liste_id=liste.id).join(ResultatsRegion)
|
||||||
|
.filter_by(resultats_france_id=resultat_france.id)) \
|
||||||
|
.scalars().all()
|
||||||
|
voix = sum(v.voix for v in voix_liste)
|
||||||
|
if voix_liste_france := session.execute(select(VoixListeFrance)
|
||||||
|
.filter_by(resultats_france_id=resultat_france.id,
|
||||||
|
liste_id=liste.id)).scalar_one_or_none():
|
||||||
|
voix_liste_france.voix = voix
|
||||||
|
else:
|
||||||
|
voix_liste_france = VoixListeFrance(resultats_france_id=resultat_france.id,
|
||||||
|
liste_id=liste.id,
|
||||||
|
voix=voix)
|
||||||
|
session.add(voix_liste_france)
|
||||||
|
|
||||||
|
session.commit()
|
||||||
|
|
||||||
|
|
||||||
def run(engine: Engine, verbose: bool = False) -> None:
|
def run(engine: Engine, verbose: bool = False) -> None:
|
||||||
|
|
Loading…
Reference in New Issue