diff --git a/alembic/versions/d7fed76a55bd_initial.py b/alembic/versions/c0443e979a90_initial.py similarity index 73% rename from alembic/versions/d7fed76a55bd_initial.py rename to alembic/versions/c0443e979a90_initial.py index 0dc64d7..2a1e377 100644 --- a/alembic/versions/d7fed76a55bd_initial.py +++ b/alembic/versions/c0443e979a90_initial.py @@ -1,8 +1,8 @@ """initial -Revision ID: d7fed76a55bd +Revision ID: c0443e979a90 Revises: -Create Date: 2024-06-15 00:03:00.687812 +Create Date: 2024-06-18 14:12:39.798179 """ from typing import Sequence, Union @@ -12,7 +12,7 @@ import sqlalchemy as sa # revision identifiers, used by Alembic. -revision: str = 'd7fed76a55bd' +revision: str = 'c0443e979a90' down_revision: Union[str, None] = None branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None @@ -20,28 +20,21 @@ depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: # ### commands auto generated by Alembic - please adjust! ### - op.create_table('bloc2024', + op.create_table('europeennes_2024_bloc', sa.Column('id', sa.Integer(), nullable=False), sa.Column('nom', sa.String(length=32), nullable=False), sa.Column('couleur', sa.String(length=7), nullable=False), sa.PrimaryKeyConstraint('id'), sa.UniqueConstraint('nom') ) - op.create_table('nuance2024', + op.create_table('europeennes_2024_nuance', sa.Column('code', sa.String(length=8), nullable=False), sa.Column('nom', sa.String(length=64), nullable=False), sa.Column('couleur', sa.String(length=7), nullable=False), sa.PrimaryKeyConstraint('code'), sa.UniqueConstraint('nom') ) - op.create_table('region', - sa.Column('code_insee', sa.String(length=3), nullable=False), - sa.Column('libelle', sa.String(length=64), nullable=False), - sa.Column('geometry', sa.JSON(), nullable=False), - sa.PrimaryKeyConstraint('code_insee'), - sa.UniqueConstraint('libelle') - ) - op.create_table('resultats2024_france', + op.create_table('europeennes_2024_resultats_france', sa.Column('id', sa.Integer(), nullable=False), sa.Column('inscrits', sa.Integer(), nullable=False), sa.Column('votants', sa.Integer(), nullable=False), @@ -51,6 +44,13 @@ def upgrade() -> None: sa.Column('nuls', sa.Integer(), nullable=False), sa.PrimaryKeyConstraint('id') ) + op.create_table('region', + sa.Column('code_insee', sa.String(length=3), nullable=False), + sa.Column('libelle', sa.String(length=64), nullable=False), + sa.Column('geometry', sa.JSON(), nullable=False), + sa.PrimaryKeyConstraint('code_insee'), + sa.UniqueConstraint('libelle') + ) op.create_table('departement', sa.Column('code_insee', sa.String(length=3), nullable=False), sa.Column('libelle', sa.String(length=64), nullable=False), @@ -60,21 +60,21 @@ def upgrade() -> None: sa.PrimaryKeyConstraint('code_insee'), sa.UniqueConstraint('libelle') ) - op.create_table('liste2024', + op.create_table('europeennes_2024_liste', sa.Column('id', sa.Integer(), nullable=False), sa.Column('nom', sa.String(length=256), nullable=False), sa.Column('nom_majuscules', sa.String(length=256), nullable=True), sa.Column('numero', sa.Integer(), nullable=False), sa.Column('nuance_id', sa.String(length=8), nullable=False), sa.Column('bloc_id', sa.Integer(), nullable=False), - sa.ForeignKeyConstraint(['bloc_id'], ['bloc2024.id'], ), - sa.ForeignKeyConstraint(['nuance_id'], ['nuance2024.code'], ), + sa.ForeignKeyConstraint(['bloc_id'], ['europeennes_2024_bloc.id'], ), + sa.ForeignKeyConstraint(['nuance_id'], ['europeennes_2024_nuance.code'], ), sa.PrimaryKeyConstraint('id'), sa.UniqueConstraint('nom'), sa.UniqueConstraint('nom_majuscules'), sa.UniqueConstraint('numero') ) - op.create_table('resultats2024_region', + op.create_table('europeennes_2024_resultats_region', sa.Column('id', sa.Integer(), nullable=False), sa.Column('region_id', sa.String(length=3), nullable=False), sa.Column('resultats_france_id', sa.Integer(), nullable=False), @@ -85,21 +85,7 @@ def upgrade() -> None: sa.Column('blancs', sa.Integer(), nullable=False), sa.Column('nuls', sa.Integer(), nullable=False), sa.ForeignKeyConstraint(['region_id'], ['region.code_insee'], ), - sa.ForeignKeyConstraint(['resultats_france_id'], ['resultats2024_france.id'], ), - sa.PrimaryKeyConstraint('id') - ) - op.create_table('candidat2024', - sa.Column('id', sa.Integer(), nullable=False), - sa.Column('liste_id', sa.Integer(), nullable=False), - sa.Column('ordre', sa.Integer(), nullable=False), - sa.Column('nom', sa.String(length=256), nullable=False), - sa.Column('prenom', sa.String(length=256), nullable=False), - sa.Column('sexe', sa.Enum('MASCULIN', 'FEMININ', name='genre'), nullable=False), - sa.Column('date_naissance', sa.Date(), nullable=False), - sa.Column('profession', sa.String(length=256), nullable=False), - sa.Column('code_personnalite', sa.Enum('DEFAUT', 'EURODEPUTE', 'DEPUTE', 'SENATEUR', 'MINISTRE', 'PRESIDENT_CONSEIL_REGIONAL', 'PRESIDENT_CONSEIL_DEPARTEMENTAL', 'MAIRE', name='personnalite'), nullable=False), - sa.Column('sortant', sa.Boolean(), nullable=False), - sa.ForeignKeyConstraint(['liste_id'], ['liste2024.id'], ), + sa.ForeignKeyConstraint(['resultats_france_id'], ['europeennes_2024_resultats_france.id'], ), sa.PrimaryKeyConstraint('id') ) op.create_table('circonscription', @@ -118,7 +104,21 @@ def upgrade() -> None: sa.ForeignKeyConstraint(['departement_code'], ['departement.code_insee'], ), sa.PrimaryKeyConstraint('code_insee') ) - op.create_table('resultats2024_departement', + op.create_table('europeennes_2024_candidat', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('liste_id', sa.Integer(), nullable=False), + sa.Column('ordre', sa.Integer(), nullable=False), + sa.Column('nom', sa.String(length=256), nullable=False), + sa.Column('prenom', sa.String(length=256), nullable=False), + sa.Column('sexe', sa.Enum('MASCULIN', 'FEMININ', name='genre'), nullable=False), + sa.Column('date_naissance', sa.Date(), nullable=False), + sa.Column('profession', sa.String(length=256), nullable=False), + sa.Column('code_personnalite', sa.Enum('DEFAUT', 'EURODEPUTE', 'DEPUTE', 'SENATEUR', 'MINISTRE', 'PRESIDENT_CONSEIL_REGIONAL', 'PRESIDENT_CONSEIL_DEPARTEMENTAL', 'MAIRE', name='personnalite'), nullable=False), + sa.Column('sortant', sa.Boolean(), nullable=False), + sa.ForeignKeyConstraint(['liste_id'], ['europeennes_2024_liste.id'], ), + sa.PrimaryKeyConstraint('id') + ) + op.create_table('europeennes_2024_resultats_departement', sa.Column('id', sa.Integer(), nullable=False), sa.Column('dpt_id', sa.String(length=3), nullable=False), sa.Column('resultats_region_id', sa.Integer(), nullable=True), @@ -129,23 +129,23 @@ def upgrade() -> None: sa.Column('blancs', sa.Integer(), nullable=False), sa.Column('nuls', sa.Integer(), nullable=False), sa.ForeignKeyConstraint(['dpt_id'], ['departement.code_insee'], ), - sa.ForeignKeyConstraint(['resultats_region_id'], ['resultats2024_region.id'], ), + sa.ForeignKeyConstraint(['resultats_region_id'], ['europeennes_2024_resultats_region.id'], ), sa.PrimaryKeyConstraint('id') ) - op.create_table('voix2024_france', + op.create_table('europeennes_2024_voix_france', sa.Column('liste_id', sa.Integer(), nullable=False), sa.Column('resultats_france_id', sa.Integer(), nullable=False), sa.Column('voix', sa.Integer(), nullable=False), - sa.ForeignKeyConstraint(['liste_id'], ['liste2024.id'], ), - sa.ForeignKeyConstraint(['resultats_france_id'], ['resultats2024_france.id'], ), + sa.ForeignKeyConstraint(['liste_id'], ['europeennes_2024_liste.id'], ), + sa.ForeignKeyConstraint(['resultats_france_id'], ['europeennes_2024_resultats_france.id'], ), sa.PrimaryKeyConstraint('liste_id', 'resultats_france_id') ) - op.create_table('voix2024_region', + op.create_table('europeennes_2024_voix_region', sa.Column('liste_id', sa.Integer(), nullable=False), sa.Column('resultats_region_id', sa.Integer(), nullable=False), sa.Column('voix', sa.Integer(), nullable=False), - sa.ForeignKeyConstraint(['liste_id'], ['liste2024.id'], ), - sa.ForeignKeyConstraint(['resultats_region_id'], ['resultats2024_region.id'], ), + sa.ForeignKeyConstraint(['liste_id'], ['europeennes_2024_liste.id'], ), + sa.ForeignKeyConstraint(['resultats_region_id'], ['europeennes_2024_resultats_region.id'], ), sa.PrimaryKeyConstraint('liste_id', 'resultats_region_id') ) op.create_table('bureau_vote', @@ -160,7 +160,7 @@ def upgrade() -> None: sa.ForeignKeyConstraint(['commune_code'], ['commune.code_insee'], ), sa.PrimaryKeyConstraint('id') ) - op.create_table('resultats2024_circonscription', + op.create_table('europeennes_2024_resultats_circonscription', sa.Column('id', sa.Integer(), nullable=False), sa.Column('circo_id', sa.String(length=6), nullable=False), sa.Column('resultats_departement_id', sa.Integer(), nullable=False), @@ -171,10 +171,10 @@ def upgrade() -> None: sa.Column('blancs', sa.Integer(), nullable=False), sa.Column('nuls', sa.Integer(), nullable=False), sa.ForeignKeyConstraint(['circo_id'], ['circonscription.id'], ), - sa.ForeignKeyConstraint(['resultats_departement_id'], ['resultats2024_departement.id'], ), + sa.ForeignKeyConstraint(['resultats_departement_id'], ['europeennes_2024_resultats_departement.id'], ), sa.PrimaryKeyConstraint('id') ) - op.create_table('resultats2024_commune', + op.create_table('europeennes_2024_resultats_commune', sa.Column('id', sa.Integer(), nullable=False), sa.Column('commune_id', sa.String(length=5), nullable=False), sa.Column('resultats_dpt_id', sa.Integer(), nullable=False), @@ -185,18 +185,18 @@ def upgrade() -> None: sa.Column('blancs', sa.Integer(), nullable=False), sa.Column('nuls', sa.Integer(), nullable=False), sa.ForeignKeyConstraint(['commune_id'], ['commune.code_insee'], ), - sa.ForeignKeyConstraint(['resultats_dpt_id'], ['resultats2024_departement.id'], ), + sa.ForeignKeyConstraint(['resultats_dpt_id'], ['europeennes_2024_resultats_departement.id'], ), sa.PrimaryKeyConstraint('id') ) - op.create_table('voix2024_departement', + op.create_table('europeennes_2024_voix_departement', sa.Column('liste_id', sa.Integer(), nullable=False), sa.Column('resultats_departement_id', sa.Integer(), nullable=False), sa.Column('voix', sa.Integer(), nullable=False), - sa.ForeignKeyConstraint(['liste_id'], ['liste2024.id'], ), - sa.ForeignKeyConstraint(['resultats_departement_id'], ['resultats2024_departement.id'], ), + sa.ForeignKeyConstraint(['liste_id'], ['europeennes_2024_liste.id'], ), + sa.ForeignKeyConstraint(['resultats_departement_id'], ['europeennes_2024_resultats_departement.id'], ), sa.PrimaryKeyConstraint('liste_id', 'resultats_departement_id') ) - op.create_table('resultats2024_bureau_vote', + op.create_table('europeennes_2024_resultats_bureau_vote', sa.Column('id', sa.Integer(), nullable=False), sa.Column('bv_id', sa.String(length=16), nullable=False), sa.Column('resultats_commune_id', sa.Integer(), nullable=False), @@ -208,32 +208,32 @@ def upgrade() -> None: sa.Column('blancs', sa.Integer(), nullable=False), sa.Column('nuls', sa.Integer(), nullable=False), sa.ForeignKeyConstraint(['bv_id'], ['bureau_vote.id'], ), - sa.ForeignKeyConstraint(['resultats_circo_id'], ['resultats2024_circonscription.id'], ), - sa.ForeignKeyConstraint(['resultats_commune_id'], ['resultats2024_commune.id'], ), + sa.ForeignKeyConstraint(['resultats_circo_id'], ['europeennes_2024_resultats_circonscription.id'], ), + sa.ForeignKeyConstraint(['resultats_commune_id'], ['europeennes_2024_resultats_commune.id'], ), sa.PrimaryKeyConstraint('id') ) - op.create_table('voix2024_circonscription', + op.create_table('europeennes_2024_voix_circonscription', sa.Column('liste_id', sa.Integer(), nullable=False), sa.Column('resultats_circonscription_id', sa.Integer(), nullable=False), sa.Column('voix', sa.Integer(), nullable=False), - sa.ForeignKeyConstraint(['liste_id'], ['liste2024.id'], ), - sa.ForeignKeyConstraint(['resultats_circonscription_id'], ['resultats2024_circonscription.id'], ), + sa.ForeignKeyConstraint(['liste_id'], ['europeennes_2024_liste.id'], ), + sa.ForeignKeyConstraint(['resultats_circonscription_id'], ['europeennes_2024_resultats_circonscription.id'], ), sa.PrimaryKeyConstraint('liste_id', 'resultats_circonscription_id') ) - op.create_table('voix2024_commune', + op.create_table('europeennes_2024_voix_commune', sa.Column('liste_id', sa.Integer(), nullable=False), sa.Column('resultats_commune_id', sa.Integer(), nullable=False), sa.Column('voix', sa.Integer(), nullable=False), - sa.ForeignKeyConstraint(['liste_id'], ['liste2024.id'], ), - sa.ForeignKeyConstraint(['resultats_commune_id'], ['resultats2024_commune.id'], ), + sa.ForeignKeyConstraint(['liste_id'], ['europeennes_2024_liste.id'], ), + sa.ForeignKeyConstraint(['resultats_commune_id'], ['europeennes_2024_resultats_commune.id'], ), sa.PrimaryKeyConstraint('liste_id', 'resultats_commune_id') ) - op.create_table('voix2024_bureau_vote', + op.create_table('europeennes_2024_voix_bureau_vote', sa.Column('liste_id', sa.Integer(), nullable=False), sa.Column('resultats_bureau_vote_id', sa.Integer(), nullable=False), sa.Column('voix', sa.Integer(), nullable=False), - sa.ForeignKeyConstraint(['liste_id'], ['liste2024.id'], ), - sa.ForeignKeyConstraint(['resultats_bureau_vote_id'], ['resultats2024_bureau_vote.id'], ), + sa.ForeignKeyConstraint(['liste_id'], ['europeennes_2024_liste.id'], ), + sa.ForeignKeyConstraint(['resultats_bureau_vote_id'], ['europeennes_2024_resultats_bureau_vote.id'], ), sa.PrimaryKeyConstraint('liste_id', 'resultats_bureau_vote_id') ) # ### end Alembic commands ### @@ -241,25 +241,25 @@ def upgrade() -> None: def downgrade() -> None: # ### commands auto generated by Alembic - please adjust! ### - op.drop_table('voix2024_bureau_vote') - op.drop_table('voix2024_commune') - op.drop_table('voix2024_circonscription') - op.drop_table('resultats2024_bureau_vote') - op.drop_table('voix2024_departement') - op.drop_table('resultats2024_commune') - op.drop_table('resultats2024_circonscription') + op.drop_table('europeennes_2024_voix_bureau_vote') + op.drop_table('europeennes_2024_voix_commune') + op.drop_table('europeennes_2024_voix_circonscription') + op.drop_table('europeennes_2024_resultats_bureau_vote') + op.drop_table('europeennes_2024_voix_departement') + op.drop_table('europeennes_2024_resultats_commune') + op.drop_table('europeennes_2024_resultats_circonscription') op.drop_table('bureau_vote') - op.drop_table('voix2024_region') - op.drop_table('voix2024_france') - op.drop_table('resultats2024_departement') + op.drop_table('europeennes_2024_voix_region') + op.drop_table('europeennes_2024_voix_france') + op.drop_table('europeennes_2024_resultats_departement') + op.drop_table('europeennes_2024_candidat') op.drop_table('commune') op.drop_table('circonscription') - op.drop_table('candidat2024') - op.drop_table('resultats2024_region') - op.drop_table('liste2024') + op.drop_table('europeennes_2024_resultats_region') + op.drop_table('europeennes_2024_liste') op.drop_table('departement') - op.drop_table('resultats2024_france') op.drop_table('region') - op.drop_table('nuance2024') - op.drop_table('bloc2024') + op.drop_table('europeennes_2024_resultats_france') + op.drop_table('europeennes_2024_nuance') + op.drop_table('europeennes_2024_bloc') # ### end Alembic commands ### diff --git a/nupes/models/__init__.py b/nupes/models/__init__.py index 23f996d..1ba7052 100644 --- a/nupes/models/__init__.py +++ b/nupes/models/__init__.py @@ -1,7 +1,3 @@ from .base import Base -from .geographie import Region, Departement, Commune, Circonscription, BureauVote -from .europeennes2024 import Bloc as Bloc2024, Nuance as Nuance2024, Liste as Liste2024, Candidat as Candidat2024, \ - ResultatsFrance as ResultatsFrance2024, ResultatsRegion as ResultatsRegion2024, ResultatsDepartement as ResultatsDepartement2024, \ - ResultatsCommune as ResultatsCommune2024, ResultatsBureauVote as ResultatsBureauVote2024, \ - VoixListeFrance as VoixListeFrance2024, VoixListeRegion as VoixListeRegion2024, VoixListeDepartement as VoixListeDepartement2024, \ - VoixListeCommune as VoixListeCommune2024, VoixListeBureauVote as VoixListeBureauVote2024 +from .geographie import * +from .europeennes2024 import * diff --git a/nupes/models/europeennes2024.py b/nupes/models/europeennes2024.py index bd0dd9d..8746dc3 100644 --- a/nupes/models/europeennes2024.py +++ b/nupes/models/europeennes2024.py @@ -8,52 +8,57 @@ from sqlalchemy.orm import mapped_column, Mapped, relationship from nupes.models import Base, Region, Departement, Commune -class Bloc(Base): - __tablename__ = "bloc2024" +class BlocEuropeennes2024(Base): + __tablename__ = "europeennes_2024_bloc" id: Mapped[int] = mapped_column(primary_key=True) nom: Mapped[str] = mapped_column(String(32), unique=True) couleur: Mapped[str] = mapped_column(String(7)) - listes: Mapped[List["Liste"]] = relationship("Liste", back_populates="bloc") + listes: Mapped[List["ListeEuropeennes2024"]] = relationship("ListeEuropeennes2024", back_populates="bloc") -class Nuance(Base): - __tablename__ = "nuance2024" +class NuanceEuropeennes2024(Base): + __tablename__ = "europeennes_2024_nuance" code: Mapped[str] = mapped_column(String(8), primary_key=True) nom: Mapped[str] = mapped_column(String(64), unique=True) couleur: Mapped[str] = mapped_column(String(7)) - listes: Mapped[List["Liste"]] = relationship("Liste", back_populates="nuance") + listes: Mapped[List["ListeEuropeennes2024"]] = relationship("ListeEuropeennes2024", back_populates="nuance") -class Liste(Base): - __tablename__ = "liste2024" +class ListeEuropeennes2024(Base): + __tablename__ = "europeennes_2024_liste" id: Mapped[int] = mapped_column(primary_key=True) nom: Mapped[str] = mapped_column(String(256), unique=True) nom_majuscules: Mapped[str] = mapped_column(String(256), unique=True, nullable=True) numero: Mapped[int] = mapped_column(Integer(), unique=True) - nuance_id: Mapped[str] = mapped_column(ForeignKey("nuance2024.code")) - bloc_id: Mapped[int] = mapped_column(ForeignKey("bloc2024.id")) + nuance_id: Mapped[str] = mapped_column(ForeignKey("europeennes_2024_nuance.code")) + bloc_id: Mapped[int] = mapped_column(ForeignKey("europeennes_2024_bloc.id")) - nuance: Mapped[Nuance] = relationship(Nuance, back_populates="listes") - bloc: Mapped[Bloc] = relationship(Bloc, back_populates="listes") - candidats: Mapped[List["Candidat"]] = relationship("Candidat", back_populates="liste") + nuance: Mapped[NuanceEuropeennes2024] = relationship(NuanceEuropeennes2024, back_populates="listes") + bloc: Mapped[BlocEuropeennes2024] = relationship(BlocEuropeennes2024, back_populates="listes") + candidats: Mapped[List["CandidatEuropeennes2024"]] = relationship("CandidatEuropeennes2024", + back_populates="liste") - resultats_nationaux: Mapped[List["VoixListeFrance"]] = relationship("VoixListeFrance", back_populates="liste") - resultats_par_region: Mapped[List["VoixListeRegion"]] = relationship("VoixListeRegion", back_populates="liste") - resultats_par_departement: Mapped[List["VoixListeDepartement"]] = relationship("VoixListeDepartement", - back_populates="liste") - resultats_par_circonscription: Mapped[List["VoixListeCirconscription"]] = relationship( - "VoixListeCirconscription", back_populates="liste") - resultats_par_commune: Mapped[List["VoixListeCommune"]] = relationship("VoixListeCommune", back_populates="liste") - resultats_par_bureau_vote: Mapped[List["VoixListeBureauVote"]] = relationship("VoixListeBureauVote", - back_populates="liste") + resultats_nationaux: Mapped[List["VoixListeFranceEuropeennes2024"]] = relationship( + "VoixListeFranceEuropeennes2024", back_populates="liste") + resultats_par_region: Mapped[List["VoixListeRegionEuropeennes2024"]] = relationship( + "VoixListeRegionEuropeennes2024", back_populates="liste") + resultats_par_departement: Mapped[List[ + "VoixListeDepartementEuropeennes2024"]] = relationship( + "VoixListeDepartementEuropeennes2024", back_populates="liste") + resultats_par_circonscription: Mapped[List["VoixListeCirconscriptionEuropeennes2024"]] = relationship( + "VoixListeCirconscriptionEuropeennes2024", back_populates="liste") + resultats_par_commune: Mapped[List["VoixListeCommuneEuropeennes2024"]] = relationship( + "VoixListeCommuneEuropeennes2024", back_populates="liste") + resultats_par_bureau_vote: Mapped[List["VoixListeBureauVoteEuropeennes2024"]] = relationship( + "VoixListeBureauVoteEuropeennes2024", back_populates="liste") -class Candidat(Base): +class CandidatEuropeennes2024(Base): class Genre(enum.Enum): MASCULIN = "M" FEMININ = "F" @@ -68,10 +73,10 @@ class Candidat(Base): PRESIDENT_CONSEIL_DEPARTEMENTAL = "PCD" MAIRE = "MAI" - __tablename__ = "candidat2024" + __tablename__ = "europeennes_2024_candidat" id: Mapped[int] = mapped_column(primary_key=True) - liste_id: Mapped[int] = mapped_column(ForeignKey("liste2024.id")) + liste_id: Mapped[int] = mapped_column(ForeignKey("europeennes_2024_liste.id")) ordre: Mapped[int] = mapped_column(Integer()) nom: Mapped[str] = mapped_column(String(256)) prenom: Mapped[str] = mapped_column(String(256)) @@ -81,11 +86,11 @@ class Candidat(Base): code_personnalite: Mapped[str] = mapped_column(Enum(Personnalite)) sortant: Mapped[bool] = mapped_column(Boolean()) - liste: Mapped[Liste] = relationship(Liste, back_populates="candidats") + liste: Mapped[ListeEuropeennes2024] = relationship(ListeEuropeennes2024, back_populates="candidats") -class ResultatsFrance(Base): - __tablename__ = "resultats2024_france" +class ResultatsFranceEuropeennes2024(Base): + __tablename__ = "europeennes_2024_resultats_france" id: Mapped[int] = mapped_column(primary_key=True) inscrits: Mapped[int] = mapped_column(Integer(), default=0) @@ -95,17 +100,18 @@ class ResultatsFrance(Base): blancs: Mapped[int] = mapped_column(Integer(), default=0) nuls: Mapped[int] = mapped_column(Integer(), default=0) - resultats_regions: Mapped[List["ResultatsRegion"]] = relationship("ResultatsRegion", - back_populates="resultats_france") - voix_listes: Mapped[List["VoixListeFrance"]] = relationship("VoixListeFrance", back_populates="resultats_france") + resultats_regions: Mapped[List["ResultatsRegionEuropeennes2024"]] = relationship( + "ResultatsRegionEuropeennes2024", back_populates="resultats_france") + voix_listes: Mapped[List["VoixListeFranceEuropeennes2024"]] = relationship( + "VoixListeFranceEuropeennes2024", back_populates="resultats_france") -class ResultatsRegion(Base): - __tablename__ = "resultats2024_region" +class ResultatsRegionEuropeennes2024(Base): + __tablename__ = "europeennes_2024_resultats_region" id: Mapped[int] = mapped_column(primary_key=True) region_id: Mapped[str] = mapped_column(ForeignKey("region.code_insee")) - resultats_france_id: Mapped[int] = mapped_column(ForeignKey("resultats2024_france.id")) + resultats_france_id: Mapped[int] = mapped_column(ForeignKey("europeennes_2024_resultats_france.id")) inscrits: Mapped[int] = mapped_column(Integer(), default=0) votants: Mapped[int] = mapped_column(Integer(), default=0) abstentions: Mapped[int] = mapped_column(Integer(), default=0) @@ -113,19 +119,20 @@ class ResultatsRegion(Base): blancs: Mapped[int] = mapped_column(Integer(), default=0) nuls: Mapped[int] = mapped_column(Integer(), default=0) - region = relationship(Region, back_populates="resultats2024") - resultats_france = relationship(ResultatsFrance, back_populates="resultats_regions") - resultats_departements: Mapped[List["ResultatsDepartement"]] = relationship("ResultatsDepartement", - back_populates="resultats_region") - voix_listes: Mapped[List["VoixListeRegion"]] = relationship("VoixListeRegion", back_populates="resultats_region") + region = relationship(Region, back_populates="resultats_europeennes_2024") + resultats_france = relationship(ResultatsFranceEuropeennes2024, back_populates="resultats_regions") + resultats_departements: Mapped[List["ResultatsDepartementEuropeennes2024"]] = relationship( + "ResultatsDepartementEuropeennes2024", back_populates="resultats_region") + voix_listes: Mapped[List["VoixListeRegionEuropeennes2024"]] = relationship( + "VoixListeRegionEuropeennes2024", back_populates="resultats_region") -class ResultatsDepartement(Base): - __tablename__ = "resultats2024_departement" +class ResultatsDepartementEuropeennes2024(Base): + __tablename__ = "europeennes_2024_resultats_departement" id: Mapped[int] = mapped_column(primary_key=True) dpt_id: Mapped[str] = mapped_column(ForeignKey("departement.code_insee")) - resultats_region_id: Mapped[int] = mapped_column(ForeignKey("resultats2024_region.id"), nullable=True) + resultats_region_id: Mapped[int] = mapped_column(ForeignKey("europeennes_2024_resultats_region.id"), nullable=True) inscrits: Mapped[int] = mapped_column(Integer(), default=0) votants: Mapped[int] = mapped_column(Integer(), default=0) abstentions: Mapped[int] = mapped_column(Integer(), default=0) @@ -133,22 +140,22 @@ class ResultatsDepartement(Base): blancs: Mapped[int] = mapped_column(Integer(), default=0) nuls: Mapped[int] = mapped_column(Integer(), default=0) - departement = relationship(Departement, back_populates="resultats2024") - resultats_region = relationship(ResultatsRegion, back_populates="resultats_departements") - resultats_communes: Mapped[List["ResultatsCommune"]] = relationship("ResultatsCommune", - back_populates="resultats_departement") - resultats_circonscriptions: Mapped[List["ResultatsCirconscription"]] = relationship( - "ResultatsCirconscription", back_populates="resultats_departement") - voix_listes: Mapped[List["VoixListeDepartement"]] = relationship("VoixListeDepartement", - back_populates="resultats_departement") + departement = relationship(Departement, back_populates="resultats_europeennes_2024") + resultats_region = relationship(ResultatsRegionEuropeennes2024, back_populates="resultats_departements") + resultats_communes: Mapped[List["ResultatsCommuneEuropeennes2024"]] = relationship( + "ResultatsCommuneEuropeennes2024", back_populates="resultats_departement") + resultats_circonscriptions: Mapped[List["ResultatsCirconscriptionEuropeennes2024"]] = relationship( + "ResultatsCirconscriptionEuropeennes2024", back_populates="resultats_departement") + voix_listes: Mapped[List["VoixListeDepartementEuropeennes2024"]] = relationship( + "VoixListeDepartementEuropeennes2024", back_populates="resultats_departement") -class ResultatsCirconscription(Base): - __tablename__ = "resultats2024_circonscription" +class ResultatsCirconscriptionEuropeennes2024(Base): + __tablename__ = "europeennes_2024_resultats_circonscription" id: Mapped[int] = mapped_column(primary_key=True) circo_id: Mapped[str] = mapped_column(ForeignKey("circonscription.id")) - resultats_departement_id: Mapped[int] = mapped_column(ForeignKey("resultats2024_departement.id")) + resultats_departement_id: Mapped[int] = mapped_column(ForeignKey("europeennes_2024_resultats_departement.id")) inscrits: Mapped[int] = mapped_column(Integer(), default=0) votants: Mapped[int] = mapped_column(Integer(), default=0) abstentions: Mapped[int] = mapped_column(Integer(), default=0) @@ -156,20 +163,21 @@ class ResultatsCirconscription(Base): blancs: Mapped[int] = mapped_column(Integer(), default=0) nuls: Mapped[int] = mapped_column(Integer(), default=0) - circonscription = relationship("Circonscription", back_populates="resultats2024") - resultats_departement = relationship(ResultatsDepartement, back_populates="resultats_circonscriptions") - resultats_bureaux_vote: Mapped[List["ResultatsBureauVote"]] = relationship( - "ResultatsBureauVote", back_populates="resultats_circonscription") - voix_listes: Mapped[List["VoixListeCirconscription"]] = relationship("VoixListeCirconscription", - back_populates="resultats_circonscription") + circonscription = relationship("Circonscription", back_populates="resultats_europeennes_2024") + resultats_departement = relationship(ResultatsDepartementEuropeennes2024, + back_populates="resultats_circonscriptions") + resultats_bureaux_vote: Mapped[List["ResultatsBureauVoteEuropeennes2024"]] = relationship( + "ResultatsBureauVoteEuropeennes2024", back_populates="resultats_circonscription") + voix_listes: Mapped[List["VoixListeCirconscriptionEuropeennes2024"]] = relationship( + "VoixListeCirconscriptionEuropeennes2024", back_populates="resultats_circonscription") -class ResultatsCommune(Base): - __tablename__ = "resultats2024_commune" +class ResultatsCommuneEuropeennes2024(Base): + __tablename__ = "europeennes_2024_resultats_commune" id: Mapped[int] = mapped_column(primary_key=True) commune_id: Mapped[str] = mapped_column(ForeignKey("commune.code_insee")) - resultats_dpt_id: Mapped[int] = mapped_column(ForeignKey("resultats2024_departement.id")) + resultats_dpt_id: Mapped[int] = mapped_column(ForeignKey("europeennes_2024_resultats_departement.id")) inscrits: Mapped[int] = mapped_column(Integer(), default=0) votants: Mapped[int] = mapped_column(Integer(), default=0) abstentions: Mapped[int] = mapped_column(Integer(), default=0) @@ -177,20 +185,22 @@ class ResultatsCommune(Base): blancs: Mapped[int] = mapped_column(Integer(), default=0) nuls: Mapped[int] = mapped_column(Integer(), default=0) - commune = relationship(Commune, back_populates="resultats2024") - resultats_departement = relationship(ResultatsDepartement, back_populates="resultats_communes") - resultats_bureaux_vote: Mapped[List["ResultatsBureauVote"]] = relationship("ResultatsBureauVote", - back_populates="resultats_commune") - voix_listes: Mapped[List["VoixListeCommune"]] = relationship("VoixListeCommune", back_populates="resultats_commune") + commune = relationship(Commune, back_populates="resultats_europeennes_2024") + resultats_departement = relationship(ResultatsDepartementEuropeennes2024, back_populates="resultats_communes") + resultats_bureaux_vote: Mapped[List["ResultatsBureauVoteEuropeennes2024"]] = relationship( + "ResultatsBureauVoteEuropeennes2024", back_populates="resultats_commune") + voix_listes: Mapped[List["VoixListeCommuneEuropeennes2024"]] = relationship( + "VoixListeCommuneEuropeennes2024", back_populates="resultats_commune") -class ResultatsBureauVote(Base): - __tablename__ = "resultats2024_bureau_vote" +class ResultatsBureauVoteEuropeennes2024(Base): + __tablename__ = "europeennes_2024_resultats_bureau_vote" id: Mapped[int] = mapped_column(primary_key=True) bv_id: Mapped[str] = mapped_column(ForeignKey("bureau_vote.id")) - resultats_commune_id: Mapped[int] = mapped_column(ForeignKey("resultats2024_commune.id")) - resultats_circo_id: Mapped[int] = mapped_column(ForeignKey("resultats2024_circonscription.id"), nullable=True) + resultats_commune_id: Mapped[int] = mapped_column(ForeignKey("europeennes_2024_resultats_commune.id")) + resultats_circo_id: Mapped[int] = mapped_column(ForeignKey("europeennes_2024_resultats_circonscription.id"), + nullable=True) inscrits: Mapped[int] = mapped_column(Integer(), default=0) votants: Mapped[int] = mapped_column(Integer(), default=0) abstentions: Mapped[int] = mapped_column(Integer(), default=0) @@ -198,77 +208,88 @@ class ResultatsBureauVote(Base): blancs: Mapped[int] = mapped_column(Integer(), default=0) nuls: Mapped[int] = mapped_column(Integer(), default=0) - bureau_vote = relationship("BureauVote", back_populates="resultats2024") - resultats_commune = relationship(ResultatsCommune, back_populates="resultats_bureaux_vote") - resultats_circonscription = relationship(ResultatsCirconscription, back_populates="resultats_bureaux_vote") - voix_listes: Mapped[List["VoixListeBureauVote"]] = relationship("VoixListeBureauVote", - back_populates="resultats_bureau_vote") + bureau_vote = relationship("BureauVote", back_populates="resultats_europeennes_2024") + resultats_commune = relationship(ResultatsCommuneEuropeennes2024, back_populates="resultats_bureaux_vote") + resultats_circonscription = relationship(ResultatsCirconscriptionEuropeennes2024, + back_populates="resultats_bureaux_vote") + voix_listes: Mapped[List["VoixListeBureauVoteEuropeennes2024"]] = relationship( + "VoixListeBureauVoteEuropeennes2024", back_populates="resultats_bureau_vote") -class VoixListeFrance(Base): - __tablename__ = "voix2024_france" +class VoixListeFranceEuropeennes2024(Base): + __tablename__ = "europeennes_2024_voix_france" - liste_id: Mapped[int] = mapped_column(ForeignKey("liste2024.id"), primary_key=True) - resultats_france_id: Mapped[int] = mapped_column(ForeignKey("resultats2024_france.id"), primary_key=True) + liste_id: Mapped[int] = mapped_column(ForeignKey("europeennes_2024_liste.id"), primary_key=True) + resultats_france_id: Mapped[int] = mapped_column(ForeignKey("europeennes_2024_resultats_france.id"), + primary_key=True) voix: Mapped[int] = mapped_column(Integer(), default=0) - liste: Mapped[Liste] = relationship(Liste, back_populates="resultats_nationaux") - resultats_france: Mapped[ResultatsFrance] = relationship(ResultatsFrance, back_populates="voix_listes") + liste: Mapped[ListeEuropeennes2024] = relationship(ListeEuropeennes2024, back_populates="resultats_nationaux") + resultats_france: Mapped[ResultatsFranceEuropeennes2024] = relationship(ResultatsFranceEuropeennes2024, + back_populates="voix_listes") -class VoixListeRegion(Base): - __tablename__ = "voix2024_region" +class VoixListeRegionEuropeennes2024(Base): + __tablename__ = "europeennes_2024_voix_region" - liste_id: Mapped[int] = mapped_column(ForeignKey("liste2024.id"), primary_key=True) - resultats_region_id: Mapped[int] = mapped_column(ForeignKey("resultats2024_region.id"), primary_key=True) + liste_id: Mapped[int] = mapped_column(ForeignKey("europeennes_2024_liste.id"), primary_key=True) + resultats_region_id: Mapped[int] = mapped_column(ForeignKey("europeennes_2024_resultats_region.id"), + primary_key=True) voix: Mapped[int] = mapped_column(Integer(), default=0) - liste: Mapped[Liste] = relationship(Liste, back_populates="resultats_par_region") - resultats_region: Mapped[ResultatsRegion] = relationship(ResultatsRegion, back_populates="voix_listes") + liste: Mapped[ListeEuropeennes2024] = relationship(ListeEuropeennes2024, back_populates="resultats_par_region") + resultats_region: Mapped[ResultatsRegionEuropeennes2024] = relationship(ResultatsRegionEuropeennes2024, + back_populates="voix_listes") -class VoixListeDepartement(Base): - __tablename__ = "voix2024_departement" +class VoixListeDepartementEuropeennes2024(Base): + __tablename__ = "europeennes_2024_voix_departement" - liste_id: Mapped[int] = mapped_column(ForeignKey("liste2024.id"), primary_key=True) - resultats_departement_id: Mapped[int] = mapped_column(ForeignKey("resultats2024_departement.id"), primary_key=True) + liste_id: Mapped[int] = mapped_column(ForeignKey("europeennes_2024_liste.id"), primary_key=True) + resultats_departement_id: Mapped[int] = mapped_column(ForeignKey("europeennes_2024_resultats_departement.id"), + primary_key=True) voix: Mapped[int] = mapped_column(Integer(), default=0) - liste: Mapped[Liste] = relationship(Liste, back_populates="resultats_par_departement") - resultats_departement: Mapped[ResultatsDepartement] = relationship(ResultatsDepartement, - back_populates="voix_listes") + liste: Mapped[ListeEuropeennes2024] = relationship(ListeEuropeennes2024, back_populates="resultats_par_departement") + resultats_departement: Mapped[ResultatsDepartementEuropeennes2024] = relationship( + ResultatsDepartementEuropeennes2024, back_populates="voix_listes") -class VoixListeCirconscription(Base): - __tablename__ = "voix2024_circonscription" +class VoixListeCirconscriptionEuropeennes2024(Base): + __tablename__ = "europeennes_2024_voix_circonscription" - liste_id: Mapped[int] = mapped_column(ForeignKey("liste2024.id"), primary_key=True) - resultats_circonscription_id: Mapped[int] = mapped_column(ForeignKey("resultats2024_circonscription.id"), - primary_key=True) + liste_id: Mapped[int] = mapped_column(ForeignKey("europeennes_2024_liste.id"), primary_key=True) + resultats_circonscription_id: Mapped[int] = mapped_column( + ForeignKey("europeennes_2024_resultats_circonscription.id"), primary_key=True) voix: Mapped[int] = mapped_column(Integer(), default=0) - liste: Mapped[Liste] = relationship(Liste, back_populates="resultats_par_circonscription") - resultats_circonscription: Mapped[ResultatsCirconscription] = relationship(ResultatsCirconscription, - back_populates="voix_listes") + liste: Mapped[ListeEuropeennes2024] = relationship(ListeEuropeennes2024, + back_populates="resultats_par_circonscription") + resultats_circonscription: Mapped[ResultatsCirconscriptionEuropeennes2024] = relationship( + ResultatsCirconscriptionEuropeennes2024, back_populates="voix_listes") -class VoixListeCommune(Base): - __tablename__ = "voix2024_commune" +class VoixListeCommuneEuropeennes2024(Base): + __tablename__ = "europeennes_2024_voix_commune" - liste_id: Mapped[int] = mapped_column(ForeignKey("liste2024.id"), primary_key=True) - resultats_commune_id: Mapped[int] = mapped_column(ForeignKey("resultats2024_commune.id"), primary_key=True) + liste_id: Mapped[int] = mapped_column(ForeignKey("europeennes_2024_liste.id"), primary_key=True) + resultats_commune_id: Mapped[int] = mapped_column(ForeignKey("europeennes_2024_resultats_commune.id"), + primary_key=True) voix: Mapped[int] = mapped_column(Integer(), default=0) - liste: Mapped[Liste] = relationship(Liste, back_populates="resultats_par_commune") - resultats_commune: Mapped[ResultatsCommune] = relationship(ResultatsCommune, back_populates="voix_listes") + liste: Mapped[ListeEuropeennes2024] = relationship(ListeEuropeennes2024, back_populates="resultats_par_commune") + resultats_commune: Mapped[ResultatsCommuneEuropeennes2024] = relationship(ResultatsCommuneEuropeennes2024, + back_populates="voix_listes") -class VoixListeBureauVote(Base): - __tablename__ = "voix2024_bureau_vote" +class VoixListeBureauVoteEuropeennes2024(Base): + __tablename__ = "europeennes_2024_voix_bureau_vote" - liste_id: Mapped[int] = mapped_column(ForeignKey("liste2024.id"), primary_key=True) - resultats_bureau_vote_id: Mapped[int] = mapped_column(ForeignKey("resultats2024_bureau_vote.id"), primary_key=True) + liste_id: Mapped[int] = mapped_column(ForeignKey("europeennes_2024_liste.id"), primary_key=True) + resultats_bureau_vote_id: Mapped[int] = mapped_column(ForeignKey("europeennes_2024_resultats_bureau_vote.id"), + primary_key=True) voix: Mapped[int] = mapped_column(Integer(), default=0) - liste: Mapped[Liste] = relationship(Liste, back_populates="resultats_par_bureau_vote") - resultats_bureau_vote: Mapped[ResultatsBureauVote] = relationship(ResultatsBureauVote, back_populates="voix_listes") + liste: Mapped[ListeEuropeennes2024] = relationship(ListeEuropeennes2024, back_populates="resultats_par_bureau_vote") + resultats_bureau_vote: Mapped[ResultatsBureauVoteEuropeennes2024] = relationship(ResultatsBureauVoteEuropeennes2024, + back_populates="voix_listes") diff --git a/nupes/models/geographie.py b/nupes/models/geographie.py index a372c38..188e3e2 100644 --- a/nupes/models/geographie.py +++ b/nupes/models/geographie.py @@ -1,6 +1,6 @@ from typing import List -from sqlalchemy import Float, ForeignKey, Integer, JSON, String +from sqlalchemy import ForeignKey, Integer, JSON, String from sqlalchemy.orm import mapped_column, Mapped, relationship from nupes.models import Base @@ -15,7 +15,7 @@ class Region(Base): departements: Mapped[List["Departement"]] = relationship("Departement", back_populates="region") - resultats2024 = relationship("ResultatsRegion", back_populates="region") + resultats_europeennes_2024 = relationship("ResultatsRegionEuropeennes2024", back_populates="region") class Departement(Base): @@ -30,7 +30,7 @@ class Departement(Base): circonscriptions: Mapped[List["Circonscription"]] = relationship("Circonscription", back_populates="departement") communes: Mapped[List["Commune"]] = relationship("Commune", back_populates="departement") - resultats2024 = relationship("ResultatsDepartement", back_populates="departement") + resultats_europeennes_2024 = relationship("ResultatsDepartementEuropeennes2024", back_populates="departement") class Commune(Base): @@ -44,7 +44,7 @@ class Commune(Base): departement: Mapped[Departement] = relationship(Departement, back_populates="communes") bureaux_vote: Mapped[List["BureauVote"]] = relationship("BureauVote", back_populates="commune") - resultats2024 = relationship("ResultatsCommune", back_populates="commune") + resultats_europeennes_2024 = relationship("ResultatsCommuneEuropeennes2024", back_populates="commune") class Circonscription(Base): @@ -58,7 +58,8 @@ class Circonscription(Base): departement: Mapped[Departement] = relationship(Departement, back_populates="circonscriptions") bureaux_vote: Mapped[List["BureauVote"]] = relationship("BureauVote", back_populates="circonscription") - resultats2024 = relationship("ResultatsCirconscription", back_populates="circonscription") + resultats_europeennes_2024 = relationship("ResultatsCirconscriptionEuropeennes2024", + back_populates="circonscription") class BureauVote(Base): @@ -75,4 +76,4 @@ class BureauVote(Base): commune: Mapped[Commune] = relationship(Commune, back_populates="bureaux_vote") circonscription: Mapped[Circonscription] = relationship(Circonscription, back_populates="bureaux_vote") - resultats2024 = relationship("ResultatsBureauVote", back_populates="bureau_vote") + resultats_europeennes_2024 = relationship("ResultatsBureauVoteEuropeennes2024", back_populates="bureau_vote") diff --git a/nupes/scripts/export_resultats_2024.py b/nupes/scripts/export_resultats_2024.py index 65f123d..e1ae504 100644 --- a/nupes/scripts/export_resultats_2024.py +++ b/nupes/scripts/export_resultats_2024.py @@ -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 = { diff --git a/nupes/scripts/import_candidats_2024.py b/nupes/scripts/import_candidats_2024.py index 79c8481..3e9d0b9 100644 --- a/nupes/scripts/import_candidats_2024.py +++ b/nupes/scripts/import_candidats_2024.py @@ -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) diff --git a/nupes/scripts/import_geographie.py b/nupes/scripts/import_geographie.py index 910da5b..a2d6a84 100644 --- a/nupes/scripts/import_geographie.py +++ b/nupes/scripts/import_geographie.py @@ -1,5 +1,4 @@ import json -from datetime import datetime from pathlib import Path import requests diff --git a/nupes/scripts/import_resultats_2024.py b/nupes/scripts/import_resultats_2024.py index 6c10bf9..6b1002e 100644 --- a/nupes/scripts/import_resultats_2024.py +++ b/nupes/scripts/import_resultats_2024.py @@ -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() diff --git a/nupes/scripts/import_resultats_web_2024.py b/nupes/scripts/import_resultats_web_2024.py index f8a240c..7afaaa5 100644 --- a/nupes/scripts/import_resultats_web_2024.py +++ b/nupes/scripts/import_resultats_web_2024.py @@ -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()