Purge_Registres_D-c-s_INSEE/purge-registres-deces-insee/trouver_decedes.py

98 lines
4.4 KiB
Python
Raw Normal View History

2020-06-07 00:52:15 +02:00
"""
Copyright (c) 2020 Sdj Geek
Voir le fichier LICENSE
Ce programme permet de comparer le fichier des personnes décédées établi par l'INSEE avec les registre de membres de
l'Église, afin de déterminer si figurent dans nos registre des personnes décédées.
L'INSEE reçoit des communes les décès enregistrés. Le fichier des personnes décédées établi par l'INSEE est en accès
libre sur le site https://www.data.gouv.fr.
"""
import argparse
2020-06-07 00:52:15 +02:00
import os
from bdd_insee import BddInsee
from site_eglise import SiteEglise
from excel_in import ExcelIn
from excel_out import ExcelOut
2020-06-07 00:52:15 +02:00
def default_tracker(step=None, text=None, set_max=None, running=None):
2020-07-01 23:33:55 +02:00
if text:
print(text)
def trouver_decedes(chemin_base_donnees, numeros_unites, chemin_repertoire_sortie, cookie_path=None, excel_path=None,
tracker=None):
2020-06-09 00:16:00 +02:00
"""Recherche les personnes décédées dans les registres
:param chemin_base_donnees: chemin vers le fichier SQLite
:param numeros_unites: liste des numéros d'unités à analyser
:param chemin_repertoire_sortie: chemin vers le répertoire inscrire les fichiers de sortie
:param cookie_path: chemin vers la base de donnée des cookies
:param excel_path: chemin vers le fichier Excel contenant la liste des membres à rechercher
:param tracker: Objet permettant de suivre l'avancée du traitement
2020-06-09 00:16:00 +02:00
"""
2020-07-17 21:49:45 +02:00
# Tracker par défaut
2020-07-01 23:33:55 +02:00
if tracker is None:
tracker = default_tracker
# Initialiser les accès aux données INSEE
2020-06-07 00:52:15 +02:00
base_insee = BddInsee(chemin_base_donnees)
# Initialiser les fournisseurs de liste de membres
fournisseurs_membres = list()
if excel_path:
fournisseurs_membres.append(ExcelIn(excel_path))
if numeros_unites:
for unite in numeros_unites:
fournisseurs_membres.append(SiteEglise(unite, cookie_path))
# Boucler sur la liste fournisseurs
for member_provider in fournisseurs_membres:
tracker(set_max=member_provider.load())
tracker(text=f"Recherche dans {member_provider.get_name()}\n")
2020-06-07 00:52:15 +02:00
# Récupérer la liste des membres
members = member_provider.get_member_list()
# Préparer les fichiers de sortie
output_base_name = os.path.join(chemin_repertoire_sortie, f"liste_membres_decedes_{member_provider.get_name()}")
output_txt = open(output_base_name + ".txt", 'w')
output_xls = ExcelOut(output_base_name + ".xlsx")
output_txt.write("Les lieux dans le fichier de l'INSEE sont donnés en Code Officiel Géographique en vigueur au moment de la prise en compte du décès\n")
# Boucler sur la liste des membres
for member in members:
query = base_insee.find_person(member.r_first_name, member.r_last_name, member.r_maiden_name,
member.r_annee, member.r_mois, member.r_jour)
for person in query:
member.set_insee(person)
text = member.get_texte_decede()
tracker(text=text)
output_txt.write(text)
output_xls.add_member(member)
tracker(step=1)
# Clore les fichiers de sortie
output_txt.close()
output_xls.generate_output()
tracker(running=False)
2020-06-07 00:52:15 +02:00
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Recherche des personnes décédées dans les registres.')
parser.add_argument('chemin_base_donnees', type=str, help="chemin vers la base de données")
parser.add_argument('chemin_repertoire_sortie', type=str, help="chemin vers le répertoire de sortie")
parser.add_argument('--numeros_unites', '-u', type=str, help="numéros des l'unités à traiter, séparés par des virgules (ex: 123,753,469)")
parser.add_argument('--cookie', '-c', type=str, help="chemin vers la base de donnée des cookies de Firefox")
parser.add_argument('--excel', '-e', type=str, help="chemin vers le fichier Excel contenant la liste des membres à rechercher")
args = parser.parse_args()
if args.numeros_unites:
numeros_unites = args.numeros_unites.split(',')
else:
numeros_unites = list()
trouver_decedes(chemin_base_donnees=args.chemin_base_donnees,
numeros_unites=numeros_unites,
chemin_repertoire_sortie=args.chemin_repertoire_sortie,
cookie_path=args.cookie,
excel_path=args.excel)