117 lines
3.5 KiB
Python
117 lines
3.5 KiB
Python
"""
|
|
Copyright (c) 2020 Sdj Geek
|
|
Voir le fichier LICENSE
|
|
|
|
"""
|
|
|
|
from abc import ABC, abstractmethod
|
|
from site_opendatasoft import get_ville_from_cog
|
|
|
|
|
|
class MembreBase(ABC):
|
|
|
|
def __init__(self, provider):
|
|
self.provider = provider
|
|
# Données issues des registres
|
|
self.r_id = None
|
|
self.r_first_name = None
|
|
self.r_last_name = None
|
|
self.r_maiden_name = None
|
|
self.r_annee = None
|
|
self.r_mois = None
|
|
self.r_jour = None
|
|
self.r_ville = None
|
|
self.r_sexe = None
|
|
|
|
# Données issues de l'INSEE
|
|
self.i_first_name = None
|
|
self.i_last_name = None
|
|
self.i_annee_naissance = None
|
|
self.i_mois_naissance = None
|
|
self.i_jour_naissance = None
|
|
self.i_ville_naissance = None
|
|
self.i_annee_deces = None
|
|
self.i_mois_deces = None
|
|
self.i_jour_deces = None
|
|
self.i_ville_deces = None
|
|
|
|
def get_nom_registres(self):
|
|
nom_registres = f"{self.r_last_name}, {self.r_first_name}"
|
|
if self.r_maiden_name:
|
|
nom_registres = f"{nom_registres} née {self.r_maiden_name.upper()}"
|
|
return nom_registres
|
|
|
|
def get_nom_insee(self):
|
|
return f"{self.i_last_name}, {self.i_first_name}"
|
|
|
|
def set_insee(self, insee):
|
|
self.i_first_name = insee.first_name
|
|
self.i_last_name = insee.last_name
|
|
self.i_annee_naissance = insee.annee_naissance
|
|
self.i_mois_naissance = insee.mois_naissance
|
|
self.i_jour_naissance = insee.jour_naissance
|
|
self.i_ville_naissance = insee.code_lieu_naissance
|
|
self.i_annee_deces = insee.annee_deces
|
|
self.i_mois_deces = insee.mois_deces
|
|
self.i_jour_deces = insee.jour_deces
|
|
self.i_ville_deces = insee.code_lieu_deces
|
|
|
|
def convertir_villes_insee(self):
|
|
old_value = self.i_ville_naissance
|
|
new_value = None
|
|
try:
|
|
int(self.i_ville_naissance)
|
|
except ValueError:
|
|
pass
|
|
else:
|
|
new_value = get_ville_from_cog(self.i_ville_naissance)
|
|
if new_value is not None:
|
|
self.i_ville_naissance = new_value
|
|
if old_value == self.i_ville_deces:
|
|
self.i_ville_deces = new_value
|
|
else:
|
|
try:
|
|
int(self.i_ville_deces)
|
|
except ValueError:
|
|
pass
|
|
else:
|
|
new_value = get_ville_from_cog(self.i_ville_deces)
|
|
if new_value is not None:
|
|
self.i_ville_deces = new_value
|
|
|
|
def get_texte_decede(self):
|
|
if self.r_sexe == "F":
|
|
feminin = "e"
|
|
elif self.r_sexe == "M":
|
|
feminin = ""
|
|
else:
|
|
feminin = "(e)"
|
|
self.convertir_villes_insee()
|
|
return f"""
|
|
Le membre {self.get_nom_registres()} ({self.r_id}),
|
|
né{feminin} le {self.r_jour:0>2}/{self.r_mois:0>2}/{self.r_annee:0>4} à {self.r_ville.upper()}
|
|
semble être décédé{feminin}.
|
|
Dans le fichier de l'INSEE on peut trouver {self.get_nom_insee()}
|
|
né{feminin} le {self.i_jour_naissance:0>2}/{self.i_mois_naissance:0>2}/{self.i_annee_naissance:0>4} à {self.i_ville_naissance}
|
|
décédé{feminin} le {self.i_jour_deces:0>2}/{self.i_mois_deces:0>2}/{self.i_annee_deces:0>4} à {self.i_ville_deces}
|
|
"""
|
|
|
|
|
|
class MembreProvider(ABC):
|
|
|
|
@abstractmethod
|
|
def load(self):
|
|
pass
|
|
|
|
@abstractmethod
|
|
def get_name(self):
|
|
pass
|
|
|
|
@abstractmethod
|
|
def __len__(self):
|
|
pass
|
|
|
|
@abstractmethod
|
|
def get_member_list(self):
|
|
pass
|