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 .
"""
2020-06-15 21:05:27 +02:00
import argparse
2020-06-07 00:52:15 +02:00
import os
from bdd_insee import BddInsee
2020-06-15 21:05:27 +02:00
from site_eglise import SiteEglise
2020-07-29 09:56:37 +02:00
from excel_in import ExcelIn
from excel_out import ExcelOut
2020-06-07 00:52:15 +02:00
2020-07-28 16:50:35 +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 )
2020-07-18 16:18:17 +02:00
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 où inscrire les fichiers de sortie
2020-06-15 21:05:27 +02:00
: param cookie_path : chemin vers la base de donnée des cookies
2020-07-18 16:18:17 +02:00
: 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
2020-07-18 16:18:17 +02:00
# Initialiser les accès aux données INSEE
2020-06-07 00:52:15 +02:00
base_insee = BddInsee ( chemin_base_donnees )
2020-07-18 16:18:17 +02:00
# Initialiser les fournisseurs de liste de membres
fournisseurs_membres = list ( )
if excel_path :
2020-07-29 09:56:37 +02:00
fournisseurs_membres . append ( ExcelIn ( excel_path ) )
if numeros_unites :
for unite in numeros_unites :
fournisseurs_membres . append ( SiteEglise ( unite , cookie_path ) )
2020-07-18 16:18:17 +02:00
# Boucler sur la liste fournisseurs
for member_provider in fournisseurs_membres :
tracker ( set_max = member_provider . load ( ) )
2020-07-29 09:56:37 +02:00
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
2020-07-18 16:18:17 +02:00
members = member_provider . get_member_list ( )
2020-07-29 09:56:37 +02:00
# 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 ( )
2020-07-28 16:50:35 +02:00
tracker ( running = False )
2020-06-07 00:52:15 +02:00
if __name__ == " __main__ " :
2020-06-16 23:27:47 +02:00
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 " )
2020-07-18 16:18:17 +02:00
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 " )
2020-06-16 23:27:47 +02:00
args = parser . parse_args ( )
2020-07-18 16:18:17 +02:00
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 )