Compare commits
6 Commits
Author | SHA1 | Date | |
---|---|---|---|
793eeab5ca | |||
962977774b | |||
0d94358f10 | |||
ff1a88c85b | |||
d879cf389d | |||
a93c05bcc3 |
49
IFPass.py
49
IFPass.py
@ -23,7 +23,7 @@ from colorama import init
|
||||
from termcolor import colored
|
||||
|
||||
|
||||
version = 'dev' # dev/devnocam
|
||||
version = '3.1-1' # dev/devnocam
|
||||
|
||||
configdir = os.path.join(os.getenv('PROGRAMDATA'), 'IFPass')
|
||||
config = os.path.join(configdir, 'IFPass.conf')
|
||||
@ -248,7 +248,7 @@ def bkpdb():
|
||||
|
||||
|
||||
def fillcard(clientID, titrename, firstname, dateexp, barcode, picture):
|
||||
print("Création de la carte avec les informations...", end='')
|
||||
print("Création du verso de la carte avec les informations...", end='')
|
||||
try:
|
||||
im = Image.open(pngtemplate)
|
||||
except FileNotFoundError:
|
||||
@ -287,6 +287,7 @@ def fillcard(clientID, titrename, firstname, dateexp, barcode, picture):
|
||||
|
||||
|
||||
def mergepdf(clientID):
|
||||
print("Fusion du recto et du verso de la carte...", end='')
|
||||
cartefilename = os.path.join(imgdir, clientID + '.pdf')
|
||||
output = PdfFileWriter()
|
||||
|
||||
@ -302,6 +303,7 @@ def mergepdf(clientID):
|
||||
output.write(f)
|
||||
|
||||
os.remove(imgdir + clientID + '_Front.pdf')
|
||||
print(colored('[OK]', 'green'))
|
||||
|
||||
return cartefilename
|
||||
|
||||
@ -311,6 +313,17 @@ def printcard(cartefilename):
|
||||
subprocess.Popen('"' + AcrobatReader + '"' + ' /h /n /t ' + cartefilename + ' ' + printername, shell=False)
|
||||
|
||||
|
||||
def getdateexp():
|
||||
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')
|
||||
return dateexp
|
||||
|
||||
|
||||
def newmember():
|
||||
while "the informations are incorrect": # Loop Filling informations
|
||||
os.system('cls')
|
||||
@ -322,13 +335,7 @@ def newmember():
|
||||
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')
|
||||
dateexp = getdateexp()
|
||||
|
||||
os.system('cls')
|
||||
print("Titre : ", colored(titre, 'green'))
|
||||
@ -400,11 +407,11 @@ def membersearch():
|
||||
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
|
||||
print(colored(f"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']))
|
||||
|
||||
print('\n1 - Modifier', "2 - Renouveller l'abonnement", '3 - Imprimer la carte', '0 - Menu principal', sep='\n')
|
||||
print('\n1 - Modifier', "2 - Renouveller l'abonnement / Choisir un nouvelle date d'expiration", '3 - Imprimer la carte', '0 - Menu principal', sep='\n')
|
||||
choix = input('Choix : ')
|
||||
if choix == '0':
|
||||
os.system('cls')
|
||||
@ -431,13 +438,17 @@ def memberdo(choix, member):
|
||||
titre, firstname, surname, dateexp = memberedit(titre, firstname, surname, clientID, dateinsc, dateexp)
|
||||
|
||||
elif choix == '2': # Renew subscription
|
||||
dateexp = datetime.strptime(dateexp, '%d/%m/%Y').date()
|
||||
diff = (dateexp - date.today()).days
|
||||
if diff >= 0:
|
||||
dateexp = dateexp + timedelta(days=365)
|
||||
elif diff < 0:
|
||||
dateexp = date.today() + timedelta(days=365)
|
||||
dateexp = dateexp.strftime('%d/%m/%Y')
|
||||
changeexp = yes_or_no("Voulez-vous choisir la date d'expiration ?")
|
||||
if changeexp:
|
||||
dateexp = getdateexp()
|
||||
else:
|
||||
dateexp = datetime.strptime(dateexp, '%d/%m/%Y').date()
|
||||
diff = (dateexp - date.today()).days
|
||||
if diff >= 0:
|
||||
dateexp = dateexp + timedelta(days=365)
|
||||
elif diff < 0:
|
||||
dateexp = date.today() + timedelta(days=365)
|
||||
dateexp = dateexp.strftime('%d/%m/%Y')
|
||||
|
||||
if titre == 'Dr.':
|
||||
titrename = titre + ' ' + surname
|
||||
@ -472,6 +483,7 @@ def memberdo(choix, member):
|
||||
print(colored("La date d'expiration a bien été mise à jour !\n", 'blue', attrs=['bold']))
|
||||
|
||||
elif choix == '3': # Print card
|
||||
cartefilename = os.path.join(imgdir, clientID + '.pdf')
|
||||
printcard(cartefilename)
|
||||
else:
|
||||
print(colored('Choix incorrect !\n', 'red', attrs=['bold']))
|
||||
@ -532,6 +544,7 @@ def main():
|
||||
if version in ('dev', 'devnocam'):
|
||||
print(colored("\nATTENTION : Il s'agit d'une version en cours de développement, potentiellement instable !", 'red'))
|
||||
print("\nCe programme est developpé par par Jordan ERNST pour l'Institut Français en Hongrie.")
|
||||
print("Il est disponible sou licence MIT à cette addresse : https://framagit.org/SecT0uch/IFPass\n")
|
||||
print('Pour toute question, problème ou requête contactez-moi à pro.ernst@gmail.com.\n')
|
||||
print('1 - Nouveau membre', '2 - Rechercher un membre', '0 - Quitter', sep='\n')
|
||||
choix = input('Choix : ')
|
||||
|
11
README.md
11
README.md
@ -1,4 +1,13 @@
|
||||
# IFPass
|
||||
|
||||
IFPass is a python project developped for the "Institut Français en Hongrie" and published under MIT license.
|
||||
IFPass is a python project developped for the "Institut Français en Hongrie" and published under [MIT license](https://framagit.org/SecT0uch/IFPass/blob/master/LICENSE).
|
||||
It allows to manage a subscriber database and print member cards.
|
||||
|
||||
## Build
|
||||
|
||||
1. Install [NSIS](http://nsis.sourceforge.net/Download).
|
||||
2. Install python 3 and pip.
|
||||
3. Install the modules with `sudo -H pip install pynsist PyPDF2 termcolor`
|
||||
4. If pynsist version < 2.4, replace `/usr/lib/python3.*/site-packages/nsist/__init__.py` with https://raw.githubusercontent.com/takluyver/pynsist/master/nsist/__init__.py
|
||||
5. Run `./build.sh`
|
||||
|
||||
|
Reference in New Issue
Block a user