Search function formatting - Check validity membership

This commit is contained in:
Jordan ERNST 2018-04-25 14:50:29 +02:00
parent f9b62fc805
commit 7dc3d229e9

View File

@ -7,7 +7,7 @@ import configparser
import sys import sys
import os import os
import re import re
from datetime import date, timedelta from datetime import date, timedelta, datetime
import csv import csv
import code128 import code128
import cv2 import cv2
@ -234,11 +234,67 @@ def printcard(cartefilename):
subprocess.Popen('"' + AcrobatReader + '"' + ' /h /n /t ' + cartefilename + ' '+ printername, shell=False) subprocess.Popen('"' + AcrobatReader + '"' + ' /h /n /t ' + cartefilename + ' '+ printername, shell=False)
def membersearch():
with open(clientsfile, 'r', newline='', encoding='utf-8') as csvfile:
reader = csv.reader(csvfile, delimiter=';')
csvlist = list(map(tuple, reader))
del csvlist[0] # We dele the first line (Prénom, Nom...)
research = input('Entrez une partie du nom, prénom, ou numéro de carte (ou flashez) : ').lower()
os.system('cls')
results = []
for member in csvlist:
resfirstname = member[1].lower()
ressurname = member[2].lower()
resnumber = member[3]
if any(research in data for data in [resfirstname, ressurname, resnumber]):
results.append(member)
if results:
if len(results) == 1:
member = results[0]
else:
print('-' * 56)
print(f'{"Choix":8} {"Prénom":15} {"Nom":15} {"Numéro de carte":15}')
print('-' * 56)
for index, result in enumerate(results, start=1):
print(f'{index:^8} {result[1]:15} {result[2]:15} {result[3]:^15}')
del member
while 'The choice is not valid':
try:
memberchoice = input("De quel membre s'agit il ? (Colonne Choix) : ")
member = results[int(memberchoice) - 1]
break
except (IndexError, ValueError):
print(colored('Choix invalide ! Veillez bien à sélectionner le numéro de la colonne "Choix"', 'red', attrs=['bold']))
os.system('cls')
print("Titre : ", colored(member[0], 'green'))
print("Prénom : ", colored(member[1], 'green'))
print("Nom : ", colored(member[2], 'green'))
print("Numéro de carte : ", colored(member[3], 'green'))
print("Date d'inscription :", member[4])
print("Date d'expiration : ", member[5])
dateexp = datetime.strptime(member[5], '%d/%m/%Y').date()
diff = (dateexp - date.today()).days
if diff > 0:
print(colored(f"L'abonnement est encore valable {diff} jours.", 'green', attrs=['bold']))
elif diff < 0:
print(colored("L'abonnement est expiré depuis {abs(diff)} jours.", 'red', attrs=['bold'])) # abs() to remove minus sign
elif diff == 0:
print(colored("Il s'agit du dernier jour de l'abonnement, il expirera demain.", 'yellow', attrs=['bold']))
else:
print(colored("Aucun membre n'a été trouvé.", 'red', attrs=['bold']))
while "The program is running": while "The program is running":
init() # Initialisation of colorama
IFPassdir, printername, AcrobatReader, clientsfile, clientsbkpfile, imgdir, pdftemplate, pngtemplate, fonttemplate = initialisation()
os.system('cls')
print('1 - Nouveau membre', '2 - Rechercher un membre', '3 - Quitter', sep='\n') print('1 - Nouveau membre', '2 - Rechercher un membre', '3 - Quitter', sep='\n')
choix = input('Choix : ') choix = input('Choix : ')
IFPassdir, printername, AcrobatReader, clientsfile, clientsbkpfile, imgdir, pdftemplate, pngtemplate, fonttemplate = initialisation()
init() # Initialisation of colorama
if choix == '1': if choix == '1':
while "the informations are incorrect": # Loop Filling informations while "the informations are incorrect": # Loop Filling informations
os.system('cls') os.system('cls')
@ -286,28 +342,7 @@ while "The program is running":
printcard(cartefilename) printcard(cartefilename)
elif choix == '2': elif choix == '2':
os.system('cls') os.system('cls')
research = input('Entrez le nom, prénom, ou numéro de carte (ou flashez) : ').lower() membersearch()
try:
with open(clientsfile, 'r', newline='', encoding='utf-8') as csvfile:
results = []
for line in csvfile.readlines():
resfirstname = line.split(';')[1]
resfirstnamemin = resfirstname.lower()
ressurname = line.split(';')[2]
ressurnamemin = ressurname.lower()
resnumber = line.split(';')[3]
if any(research in data for data in [resfirstnamemin, ressurnamemin, resnumber]):
results.append((resfirstname, ressurname, resnumber))
if results:
print('Prénom', 'Nom', '"Numéro de carte"')
for result in results:
print(result[0], result[1], result[2])
else:
print(colored("Aucun membre n'a été trouvé.", 'red', attrs=['bold']))
except FileNotFoundError:
print('Le fichier client est inexistant.')
elif choix == '3': elif choix == '3':
sys.exit() sys.exit()
@ -315,3 +350,4 @@ while "The program is running":
else: else:
os.system('cls') os.system('cls')
print(colored('Choix incorrect !', 'red', attrs=['bold'])) print(colored('Choix incorrect !', 'red', attrs=['bold']))
os.system("pause")