diff --git a/IFPass.py b/IFPass.py index 5f08930..8fd442e 100644 --- a/IFPass.py +++ b/IFPass.py @@ -201,7 +201,7 @@ def getpic(): sys.exit() -def writeindb(clientID): +def writeindb(titre, firstname, surname, clientID, dateinsc, dateexp): print("Ajout dans la base de données... ", end="") with open(clientsfile, 'a', newline='', encoding='utf-8') as csvfile: writer = csv.writer(csvfile, delimiter=';') @@ -213,7 +213,7 @@ def bkpdb(): copyfile(clientsfile, clientsbkpfile) -def fillcard(barcode): +def fillcard(clientID, titrename, firstname, dateexp, barcode): print("Création de la carte avec les informations...", end='') try: im = Image.open(pngtemplate) @@ -248,12 +248,11 @@ def fillcard(barcode): # Create PDF : im = im.convert("RGB") im.save(imgdir + clientID + '_Front.pdf', 'PDF', resolution=299.0, quality=98) - writeindb(clientID) print(colored('[OK]', 'green')) -def mergepdf(): +def mergepdf(clientID): cartefilename = os.path.join(imgdir, clientID + '.pdf') output = PdfFileWriter() @@ -278,6 +277,49 @@ def printcard(cartefilename): subprocess.Popen('"' + AcrobatReader + '"' + ' /h /n /t ' + cartefilename + ' ' + printername, shell=False) +def newmember(): + while "the informations are incorrect": # Loop Filling informations + os.system('cls') + titre, firstname, surname, titrename = get_fullname() + dateinsc = date.today() + dateexp = dateinsc + timedelta(days=365) + + dateinsc = dateinsc.strftime('%d/%m/%Y') + dateexp = dateexp.strftime('%d/%m/%Y') + changeexp = yes_or_no("Voulez-vous choisir la date d'expiration ?") + if changeexp: + while True: + dateexp = input("Quelle date d'expiration voulez-vous mettre (Format : JJ/MM/AAAA)? : ") + match = re.fullmatch(r'^(0[1-9]|1[0-9]|2[0-9]|3[0-1])/(0[1-9]|1[0-2])/([0-9]){4}$', dateexp) + if match: + break + else: + print('Mauvais format ! JJ/MM/AAAA, exemple : 01/08/2042') + + os.system('cls') + print("Titre : ", colored(titre, 'green')) + print("Prénom : ", colored(firstname, 'green')) + print("Nom : ", colored(surname, 'green')) + print("Date d'inscription :", colored(dateinsc, 'green')) + print("Date d'expiration : ", colored(dateexp, 'green')) + correct = yes_or_no("Ces informations sont elles correctes ?") + + if correct: + os.system('cls') + if version != 'devnocam': + global picture + picture = getpic() + clientID = getclientID() + barcode = barcode_gen(clientID) + fillcard(clientID, titrename, firstname, dateexp, barcode) + cartefilename = mergepdf(clientID) + if version not in ('dev', 'devnocam'): + bkpdb() + printcard(cartefilename) + writeindb(titre, firstname, surname, clientID, dateinsc, dateexp) + break + + def membersearch(): with open(clientsfile, 'r', newline='', encoding='utf-8') as csvfile: reader = csv.reader(csvfile, delimiter=';') @@ -329,25 +371,59 @@ def membersearch(): elif diff == 0: print(colored("Il s'agit du dernier jour de l'abonnement, il expirera demain.", 'yellow', attrs=['bold'])) - print('\n1 - Modifier', "2 - Renouveller l'abonnement", '3 - Menu principal', sep='\n') + print('\n1 - Modifier', "2 - Renouveller l'abonnement", '3 - Imprimer la carte', '0 - Menu principal', sep='\n') choix = input('Choix : ') - if choix == '1': - print(1) - elif choix == '2': - print(2) - elif choix == '3': - return - else: - os.system('cls') - print(colored('Choix incorrect !\n', 'red', attrs=['bold'])) - + memberdo(choix, member) else: print(colored("Aucun membre n'a été trouvé.", 'red', attrs=['bold'])) os.system("pause") +def memberdo(choix, member): + titre = member[0] + firstname = member[1] + os.system('cls') + if choix == '1': # Edit member + while "the informations are incorrect": # Loop Filling informations + titre, firstname, surname, titrename = get_fullname() + + os.system('cls') + print("Titre : ", colored(titre, 'green')) + print("Prénom : ", colored(firstname, 'green')) + print("Nom : ", colored(surname, 'green')) + + correct = yes_or_no("Ces informations sont elles correctes ?") + + if correct: + newpic = yes_or_no("Voulez-vous prendre une nouvelle photo ?") + if newpic: + os.system('cls') + if version != 'devnocam': + global picture + picture = getpic() + clientID = member[3] + barcode = barcode_gen(clientID) + fillcard(barcode) + cartefilename = mergepdf() + if version not in ('dev', 'devnocam'): + bkpdb() + printcard(cartefilename) + break + + elif choix == '2': # Renew subscription + print(2) + elif choix == '3': # Print card + print('Print card') + elif choix == '0': # Menu + return + else: + os.system('cls') + print(colored('Choix incorrect !\n', 'red', attrs=['bold'])) + + def main(): - global titre, firstname, surname, titrename, dateinsc, dateexp, clientID, clientsfile, IFPassDBdir, clientsfile, imgdir, clientsbkpfile, templatesdir, pngtemplate, fonttemplate, picture, pdftemplate, printername, AcrobatReader + # global titre, firstname, surname, titrename, dateinsc, dateexp, clientID, clientsfile, IFPassDBdir, clientsfile, imgdir, clientsbkpfile, templatesdir, pngtemplate, fonttemplate, picture, pdftemplate, printername, AcrobatReader + global IFPassDBdir, clientsfile, imgdir, clientsbkpfile, templatesdir, pngtemplate, fonttemplate, pdftemplate, printername, AcrobatReader while "The program is running": init() # Initialisation of colorama IFPassDBdir, printername, AcrobatReader, clientsfile, clientsbkpfile, imgdir, templatesdir, pdftemplate, pngtemplate, fonttemplate = initialisation() @@ -360,54 +436,16 @@ def main(): print(colored("\nATTENTION : Il s'agit d'une version en cours de développement, potentiellement instable !", 'red')) print("\nLe programme IFPass à été écrit par Jordan ERNST Q1 2018 pour l'Institut Français en Hongrie.") print('Pour toute question, problème ou requête contactez-moi à pro.ernst@gmail.com.\n') - print('1 - Nouveau membre', '2 - Rechercher un membre', '3 - Quitter', sep='\n') + print('1 - Nouveau membre', '2 - Rechercher un membre', '0 - Quitter', sep='\n') choix = input('Choix : ') if choix == '1': - while "the informations are incorrect": # Loop Filling informations - os.system('cls') - titre, firstname, surname, titrename = get_fullname() - dateinsc = date.today() - dateexp = dateinsc + timedelta(days=365) - - dateinsc = dateinsc.strftime('%d/%m/%Y') - dateexp = dateexp.strftime('%d/%m/%Y') - changeexp = yes_or_no("Voulez-vous choisir la date d'expiration ?") - if changeexp: - while True: - dateexp = input("Quelle date d'expiration voulez-vous mettre (Format : JJ/MM/AAAA)? : ") - match = re.fullmatch(r'^(0[1-9]|1[0-9]|2[0-9]|3[0-1])/(0[1-9]|1[0-2])/([0-9]){4}$', dateexp) - if match: - break - else: - print('Mauvais format ! JJ/MM/AAAA, exemple : 01/08/2042') - - os.system('cls') - print("Titre : ", colored(titre, 'green')) - print("Prénom : ", colored(firstname, 'green')) - print("Nom : ", colored(surname, 'green')) - print("Date d'inscription :", colored(dateinsc, 'green')) - print("Date d'expiration : ", colored(dateexp, 'green')) - correct = yes_or_no("Ces informations sont elles correctes ?") - - if correct: - os.system('cls') - if version != 'devnocam': - global picture - picture = getpic() - clientID = getclientID() - barcode = barcode_gen(clientID) - fillcard(barcode) - cartefilename = mergepdf() - if version not in ('dev', 'devnocam'): - bkpdb() - printcard(cartefilename) - break + newmember() elif choix == '2': os.system('cls') membersearch() - elif choix == '3': + elif choix == '0': sys.exit() else: