Merge branch '10-code-geo' into 'master'
Convertir les code insee en nom de ville Closes #10 See merge request sdjgeek/purge-registres-deces-insee!5
This commit is contained in:
commit
35d82173c6
@ -1,5 +1,8 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
### [v7.0] 2020-08-04
|
||||||
|
- Convertit les Codes Officiels Géographiques en nom de commune.
|
||||||
|
|
||||||
### [v6.1] 2020-07-30
|
### [v6.1] 2020-07-30
|
||||||
- BUG: Lorsque maiden_name est None, ne pas essayer de le strip
|
- BUG: Lorsque maiden_name est None, ne pas essayer de le strip
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ Voir le fichier LICENSE
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
|
from site_opendatasoft import get_ville_from_cog
|
||||||
|
|
||||||
|
|
||||||
class MembreBase(ABC):
|
class MembreBase(ABC):
|
||||||
@ -55,6 +56,29 @@ class MembreBase(ABC):
|
|||||||
self.i_jour_deces = insee.jour_deces
|
self.i_jour_deces = insee.jour_deces
|
||||||
self.i_ville_deces = insee.code_lieu_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):
|
def get_texte_decede(self):
|
||||||
if self.r_sexe == "F":
|
if self.r_sexe == "F":
|
||||||
feminin = "e"
|
feminin = "e"
|
||||||
@ -62,6 +86,7 @@ class MembreBase(ABC):
|
|||||||
feminin = ""
|
feminin = ""
|
||||||
else:
|
else:
|
||||||
feminin = "(e)"
|
feminin = "(e)"
|
||||||
|
self.convertir_villes_insee()
|
||||||
return f"""
|
return f"""
|
||||||
Le membre {self.get_nom_registres()} ({self.r_id}),
|
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()}
|
né{feminin} le {self.r_jour:0>2}/{self.r_mois:0>2}/{self.r_annee:0>4} à {self.r_ville.upper()}
|
||||||
|
38
purge-registres-deces-insee/site_opendatasoft.py
Normal file
38
purge-registres-deces-insee/site_opendatasoft.py
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
"""
|
||||||
|
Copyright (c) 2020 Sdj Geek
|
||||||
|
Voir le fichier LICENSE
|
||||||
|
|
||||||
|
Classe d'accès aux données du site https://public.opendatasoft.com
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
import requests
|
||||||
|
|
||||||
|
|
||||||
|
def get_ville_from_cog(cog):
|
||||||
|
"""
|
||||||
|
Donne le nom de la commune (et son code postal) correspondant au code officiel géographique (cog) donné en entrée.
|
||||||
|
|
||||||
|
:param cog: le code officiel géographique à convertie
|
||||||
|
:return: le nom de la commune (et son code postal). None si la recherche a échoué.
|
||||||
|
"""
|
||||||
|
# Contacter l'API
|
||||||
|
r = requests.get("https://public.opendatasoft.com/api/records/1.0/search/",
|
||||||
|
params={'dataset': "correspondance-code-insee-code-postal",
|
||||||
|
'q': f"insee_com={cog}",
|
||||||
|
'lang': "fr"},
|
||||||
|
headers={'Accept': "application/json"})
|
||||||
|
# Tester la validité de la réponse
|
||||||
|
try:
|
||||||
|
r.raise_for_status()
|
||||||
|
except requests.HTTPError:
|
||||||
|
print(f"Warning get_ville_from_cog: requests return status {r.headers}")
|
||||||
|
return None
|
||||||
|
# Récupérer le résultat
|
||||||
|
result = r.json()
|
||||||
|
# Si résultat non vide
|
||||||
|
if result['nhits'] > 0:
|
||||||
|
# COMMUNE (CODE POSTAL)
|
||||||
|
return f"{result['records'][0]['fields']['nom_comm']} ({result['records'][0]['fields']['postal_code']})"
|
||||||
|
print(f"Warning get_ville_from_cog: no result returned for cog {cog}")
|
||||||
|
return None
|
Loading…
Reference in New Issue
Block a user