Sdj GeeK
308ed11077
- Mise en place de la lecture de la liste des membres à partir d'un fichier Excel - Mise en place de l'écriture de la liste des membres décédés dans un fichier Excel - Correction du bug: le traitement ne rend pas la main à l'IHM losque terminé - Vider le texte de l'IHM lorsqu'on clique sur OK
98 lines
4.4 KiB
Python
Executable File
98 lines
4.4 KiB
Python
Executable File
"""
|
|
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
|
|
import os
|
|
|
|
from bdd_insee import BddInsee
|
|
from site_eglise import SiteEglise
|
|
from excel_in import ExcelIn
|
|
from excel_out import ExcelOut
|
|
|
|
|
|
def default_tracker(step=None, text=None, set_max=None, running=None):
|
|
if text:
|
|
print(text)
|
|
|
|
|
|
def trouver_decedes(chemin_base_donnees, numeros_unites, chemin_repertoire_sortie, cookie_path=None, excel_path=None,
|
|
tracker=None):
|
|
"""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 où 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
|
|
|
|
"""
|
|
# Tracker par défaut
|
|
if tracker is None:
|
|
tracker = default_tracker
|
|
# Initialiser les accès aux données INSEE
|
|
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")
|
|
# 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)
|
|
|
|
|
|
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)
|