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
55 lines
1.7 KiB
Python
55 lines
1.7 KiB
Python
"""
|
|
Copyright (c) 2020 Sdj Geek
|
|
Voir le fichier LICENSE
|
|
|
|
Classe d'accès aux données du site de l'Église
|
|
|
|
"""
|
|
|
|
import os
|
|
import pandas as pd
|
|
import numpy as np
|
|
|
|
from membre_base import MembreBase, MembreProvider
|
|
|
|
|
|
class ExcelIn(MembreProvider):
|
|
|
|
def __init__(self, excel_path):
|
|
self.excel_path = excel_path
|
|
self.dataframe = None
|
|
|
|
def __len__(self):
|
|
return len(self.dataframe)
|
|
|
|
class Member(MembreBase):
|
|
|
|
def __init__(self, provider, row):
|
|
super().__init__(provider)
|
|
self.r_id = str(row["id"])
|
|
self.r_first_name = str(row["first_name"]).strip().split(' ')[0].upper()
|
|
self.r_last_name = str(row["last_name"]).strip().split(' ')[0].upper()
|
|
self.r_maiden_name = str(row["maiden_name"]).strip().split(' ')[0].upper() if type(row["maiden_name"]) == np.str else None
|
|
self.r_annee = str(row["annee"])
|
|
self.r_mois = str(row["mois"])
|
|
self.r_jour = str(row["jour"])
|
|
self.r_ville = "<VIDE>"
|
|
self.r_sexe = "F" if str(row["status"]) == "Female" else "M"
|
|
|
|
def get_name(self):
|
|
return os.path.basename(self.excel_path)
|
|
|
|
def load(self):
|
|
self.dataframe = pd.read_excel(self.excel_path, skiprows=[0, 1], usecols="B:E,G:I,K", header=None,
|
|
names=["last_name", "first_name", "maiden_name", "id", "jour", "mois", "annee",
|
|
"status"])
|
|
return len(self.dataframe)
|
|
|
|
def get_member_list(self):
|
|
for index, row in self.dataframe.iterrows():
|
|
try:
|
|
yield self.Member(self, row)
|
|
except ValueError:
|
|
print(f"Error with member [{row}]")
|
|
continue
|