Ajout d'une IHM utilisant tkinter
This commit is contained in:
parent
9d216600f8
commit
602ead50a9
79
purge-registres-deces-insee/gui_trouver_decedes.py
Normal file
79
purge-registres-deces-insee/gui_trouver_decedes.py
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
import tkinter as tk
|
||||||
|
import tkinter.ttk as ttk
|
||||||
|
import tkinter.filedialog as tkfiledialog
|
||||||
|
|
||||||
|
from trouver_decedes import trouver_decedes
|
||||||
|
|
||||||
|
class MainApplication(tk.Frame):
|
||||||
|
def __init__(self, parent, *args, **kwargs):
|
||||||
|
tk.Frame.__init__(self, parent, *args, **kwargs)
|
||||||
|
self.parent = parent
|
||||||
|
self.frame = tk.Frame(parent)
|
||||||
|
self.frame.pack()
|
||||||
|
|
||||||
|
# Sélection base INSEE
|
||||||
|
self.label_bdd_insee = tk.Label(self.frame, text="Fichier de l'INSEE")
|
||||||
|
self.label_bdd_insee.grid(row=0, column=0, sticky='e')
|
||||||
|
self.value_bdd_insee = tk.StringVar()
|
||||||
|
self.entry_bdd_insee = tk.Entry(self.frame, state='disabled', textvariable=self.value_bdd_insee)
|
||||||
|
self.entry_bdd_insee.grid(row=0, column=1, sticky='ew')
|
||||||
|
self.button_bdd_insee = tk.Button(self.frame, text="...", command=self.command_button_bdd_insee)
|
||||||
|
self.button_bdd_insee.grid(row=0, column=2, sticky='w')
|
||||||
|
|
||||||
|
# Sélection répertoire sortie
|
||||||
|
self.label_dir_out = tk.Label(self.frame, text="Répertoire de sortie")
|
||||||
|
self.label_dir_out.grid(row=1, column=0, sticky='e')
|
||||||
|
self.value_dir_out = tk.StringVar()
|
||||||
|
self.entry_dir_out = tk.Entry(self.frame, state='disabled', textvariable=self.value_dir_out)
|
||||||
|
self.entry_dir_out.grid(row=1, column=1, sticky='ew')
|
||||||
|
self.button_dir_out = tk.Button(self.frame, text="...", command=self.command_button_dir_out)
|
||||||
|
self.button_dir_out.grid(row=1, column=2, sticky='w')
|
||||||
|
|
||||||
|
# Sélection des unités à traiter
|
||||||
|
self.label_units = tk.Label(self.frame, text="Unités à purger")
|
||||||
|
self.label_units.grid(row=2, column=0, sticky='e')
|
||||||
|
self.value_units = tk.StringVar()
|
||||||
|
self.entry_units = tk.Entry(self.frame, textvariable=self.value_units)
|
||||||
|
self.entry_units.grid(row=2, column=1, sticky='ew', columnspan="2")
|
||||||
|
|
||||||
|
# Bouton validation
|
||||||
|
self.button_valid = tk.Button(self.frame, text="Ok", command=self.command_button_valid)
|
||||||
|
self.button_valid.grid(row=3, column=0, columnspan=3)
|
||||||
|
|
||||||
|
# Barre de progression
|
||||||
|
self.progressbar = ttk.Progressbar(self.frame, orient=tk.HORIZONTAL, mode='determinate')
|
||||||
|
self.progressbar.grid(row=4, column=0, columnspan=3, sticky='ew')
|
||||||
|
|
||||||
|
# Affichage des logs
|
||||||
|
self.text_log = tk.Text(self.frame, state='disabled')
|
||||||
|
self.text_log.grid(row=0, column=3, rowspan=5, sticky='nesw')
|
||||||
|
|
||||||
|
def command_button_bdd_insee(self):
|
||||||
|
self.value_bdd_insee.set(tkfiledialog.askopenfilename(title="Fichier de l'INSEE"))
|
||||||
|
|
||||||
|
def command_button_dir_out(self):
|
||||||
|
self.value_dir_out.set(tkfiledialog.askdirectory(title="Répertoire de sortie"))
|
||||||
|
|
||||||
|
def tracker(self, step=None, text=None, set_max=None):
|
||||||
|
if step:
|
||||||
|
self.progressbar.step(step)
|
||||||
|
elif text:
|
||||||
|
print(text)
|
||||||
|
self.text_log.configure(state='normal')
|
||||||
|
self.text_log.insert(tk.END, text)
|
||||||
|
self.text_log.configure(state='disabled')
|
||||||
|
elif set_max:
|
||||||
|
self.progressbar['maximum'] = set_max
|
||||||
|
|
||||||
|
def command_button_valid(self):
|
||||||
|
trouver_decedes(chemin_base_donnees=self.value_bdd_insee.get(),
|
||||||
|
chemin_repertoire_sortie=self.value_dir_out.get(),
|
||||||
|
numeros_unites=self.value_units.get().split(','),
|
||||||
|
tracker=self.tracker)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
root = tk.Tk()
|
||||||
|
root.title('Recherche des personnes décédées dans les registres')
|
||||||
|
MainApplication(root).pack(side="top", fill="both", expand=True)
|
||||||
|
root.mainloop()
|
@ -47,7 +47,12 @@ from bdd_insee import BddInsee
|
|||||||
from site_eglise import SiteEglise
|
from site_eglise import SiteEglise
|
||||||
|
|
||||||
|
|
||||||
def trouver_decedes(chemin_base_donnees, numeros_unites, chemin_repertoire_sortie, cookie_path=None):
|
def default_tracker(step=None, text=None, set_max=None):
|
||||||
|
if text:
|
||||||
|
print(text)
|
||||||
|
|
||||||
|
|
||||||
|
def trouver_decedes(chemin_base_donnees, numeros_unites, chemin_repertoire_sortie, cookie_path=None, tracker=None):
|
||||||
"""Recherche les personnes décédées dans les registres
|
"""Recherche les personnes décédées dans les registres
|
||||||
|
|
||||||
:param chemin_base_donnees: chemin vers le fichier SQLite
|
:param chemin_base_donnees: chemin vers le fichier SQLite
|
||||||
@ -56,11 +61,13 @@ def trouver_decedes(chemin_base_donnees, numeros_unites, chemin_repertoire_sorti
|
|||||||
:param cookie_path: chemin vers la base de donnée des cookies
|
:param cookie_path: chemin vers la base de donnée des cookies
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
if tracker is None:
|
||||||
|
tracker = default_tracker
|
||||||
base_insee = BddInsee(chemin_base_donnees)
|
base_insee = BddInsee(chemin_base_donnees)
|
||||||
site_eglise = SiteEglise(cookie_path)
|
site_eglise = SiteEglise(cookie_path)
|
||||||
# Boucler sur la liste des unités
|
# Boucler sur la liste des unités
|
||||||
for unite in numeros_unites:
|
for unite in numeros_unites:
|
||||||
print(f"Unité {unite}")
|
tracker(text=f"Unité {unite}")
|
||||||
# Récupérer la liste des membres
|
# Récupérer la liste des membres
|
||||||
members = site_eglise.get_member_list(unite)
|
members = site_eglise.get_member_list(unite)
|
||||||
|
|
||||||
@ -69,6 +76,7 @@ def trouver_decedes(chemin_base_donnees, numeros_unites, chemin_repertoire_sorti
|
|||||||
with open(output_file, 'w') as out_file:
|
with open(output_file, 'w') as out_file:
|
||||||
out_file.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")
|
out_file.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
|
# Boucler sur la liste des membres
|
||||||
|
tracker(set_max=len(members))
|
||||||
for member in members:
|
for member in members:
|
||||||
# Lire les noms et date de naissance
|
# Lire les noms et date de naissance
|
||||||
name_registre = member['nameListPreferredLocal']
|
name_registre = member['nameListPreferredLocal']
|
||||||
@ -110,8 +118,9 @@ Dans le fichier de l'INSEE on peut trouver {person.last_name}, {person.first_nam
|
|||||||
né{feminin} le {person.jour_naissance:0>2}/{person.mois_naissance:0>2}/{person.annee_naissance:0>4} à {person.code_lieu_naissance}
|
né{feminin} le {person.jour_naissance:0>2}/{person.mois_naissance:0>2}/{person.annee_naissance:0>4} à {person.code_lieu_naissance}
|
||||||
décédé{feminin} le {person.jour_deces:0>2}/{person.mois_deces:0>2}/{person.annee_deces:0>4} à {person.code_lieu_deces}
|
décédé{feminin} le {person.jour_deces:0>2}/{person.mois_deces:0>2}/{person.annee_deces:0>4} à {person.code_lieu_deces}
|
||||||
"""
|
"""
|
||||||
print(text)
|
tracker(text=text)
|
||||||
out_file.write(text)
|
out_file.write(text)
|
||||||
|
tracker(step=1)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
Loading…
Reference in New Issue
Block a user