nupes-elections/nupes/models/geographie.py

94 lines
4.9 KiB
Python
Raw Permalink Normal View History

from typing import List
from sqlalchemy import ForeignKey, Integer, JSON, String
from sqlalchemy.orm import mapped_column, Mapped, relationship
from nupes.models import Base
class Region(Base):
__tablename__ = "region"
code_insee: Mapped[str] = mapped_column(String(3), primary_key=True)
libelle: Mapped[str] = mapped_column(String(64), unique=True)
geometry: Mapped[dict] = mapped_column(JSON())
departements: Mapped[List["Departement"]] = relationship("Departement", back_populates="region")
2024-06-20 10:17:56 +00:00
resultats_legislatives_2022 = relationship("ResultatsRegionLegislatives2022", back_populates="region")
resultats_europeennes_2024 = relationship("ResultatsRegionEuropeennes2024", back_populates="region")
resultats_legislatives_2024 = relationship("ResultatsRegionLegislatives2024", back_populates="region")
class Departement(Base):
__tablename__ = "departement"
code_insee: Mapped[str] = mapped_column(String(3), primary_key=True)
libelle: Mapped[str] = mapped_column(String(64), unique=True)
region_code: Mapped[str] = mapped_column(ForeignKey("region.code_insee"))
geometry: Mapped[dict] = mapped_column(JSON())
region: Mapped[Region] = relationship(Region, back_populates="departements")
2024-06-16 20:27:28 +00:00
circonscriptions: Mapped[List["Circonscription"]] = relationship("Circonscription", back_populates="departement")
communes: Mapped[List["Commune"]] = relationship("Commune", back_populates="departement")
2024-06-20 10:17:56 +00:00
resultats_legislatives_2022 = relationship("ResultatsDepartementLegislatives2022", back_populates="departement")
resultats_europeennes_2024 = relationship("ResultatsDepartementEuropeennes2024", back_populates="departement")
resultats_legislatives_2024 = relationship("ResultatsDepartementLegislatives2024", back_populates="departement")
class Commune(Base):
__tablename__ = "commune"
code_insee: Mapped[str] = mapped_column(String(5), primary_key=True)
libelle: Mapped[str] = mapped_column(String(64))
departement_code: Mapped[str] = mapped_column(ForeignKey("departement.code_insee"))
geometry: Mapped[dict] = mapped_column(JSON())
departement: Mapped[Departement] = relationship(Departement, back_populates="communes")
bureaux_vote: Mapped[List["BureauVote"]] = relationship("BureauVote", back_populates="commune")
2024-06-20 10:17:56 +00:00
resultats_legislatives_2022 = relationship("ResultatsCommuneLegislatives2022", back_populates="commune")
resultats_europeennes_2024 = relationship("ResultatsCommuneEuropeennes2024", back_populates="commune")
resultats_legislatives_2024 = relationship("ResultatsCommuneLegislatives2024", back_populates="commune")
class Circonscription(Base):
__tablename__ = "circonscription"
id: Mapped[str] = mapped_column(String(6), primary_key=True)
departement_code: Mapped[str] = mapped_column(ForeignKey("departement.code_insee"))
numero: Mapped[int] = mapped_column(Integer())
2024-06-14 22:11:31 +00:00
geometry: Mapped[dict] = mapped_column(JSON())
2024-06-16 20:27:28 +00:00
departement: Mapped[Departement] = relationship(Departement, back_populates="circonscriptions")
bureaux_vote: Mapped[List["BureauVote"]] = relationship("BureauVote", back_populates="circonscription")
2024-06-20 10:17:56 +00:00
candidats_legislatives_2022 = relationship("CandidatLegislatives2022", back_populates="circonscription")
resultats_legislatives_2022 = relationship("ResultatsCirconscriptionLegislatives2022",
back_populates="circonscription")
resultats_europeennes_2024 = relationship("ResultatsCirconscriptionEuropeennes2024",
back_populates="circonscription")
candidats_legislatives_2024 = relationship("CandidatLegislatives2024", back_populates="circonscription")
resultats_legislatives_2024 = relationship("ResultatsCirconscriptionLegislatives2024",
back_populates="circonscription")
class BureauVote(Base):
__tablename__ = "bureau_vote"
id: Mapped[str] = mapped_column(String(16), primary_key=True)
commune_code: Mapped[str] = mapped_column(ForeignKey("commune.code_insee"))
code_bureau: Mapped[str] = mapped_column(String(8))
circo_code: Mapped[str] = mapped_column(ForeignKey("circonscription.id"))
libelle: Mapped[str] = mapped_column(String(256))
adresse: Mapped[str] = mapped_column(String(256), nullable=True)
geometry: Mapped[dict] = mapped_column(JSON())
commune: Mapped[Commune] = relationship(Commune, back_populates="bureaux_vote")
circonscription: Mapped[Circonscription] = relationship(Circonscription, back_populates="bureaux_vote")
2024-06-20 10:17:56 +00:00
resultats_legislatives_2022 = relationship("ResultatsBureauVoteLegislatives2022", back_populates="bureau_vote")
resultats_europeennes_2024 = relationship("ResultatsBureauVoteEuropeennes2024", back_populates="bureau_vote")
resultats_legislatives_2024 = relationship("ResultatsBureauVoteLegislatives2024", back_populates="bureau_vote")