feat: Ajout de la sélection des modes de paiements / refactoring de

l'automate
This commit is contained in:
N3WT DE COMPET
2025-04-06 20:45:41 +02:00
parent 9559db59eb
commit 5a7661db93
19 changed files with 286 additions and 190 deletions

View File

@ -93,42 +93,35 @@ def getArgFromRequest(_argument, _request):
resultat = data[_argument]
return resultat
def merge_files_pdf(filenames, output_filename):
from io import BytesIO
from PyPDF2 import PdfMerger
def merge_files_pdf(file_paths):
"""
Fusionne plusieurs fichiers PDF en un seul document.
Vérifie l'existence des fichiers sources avant la fusion.
Fusionne plusieurs fichiers PDF et retourne le contenu fusionné en mémoire.
"""
merger = PdfMerger()
valid_files = []
# Vérifier l'existence des fichiers et ne garder que ceux qui existent
print(f'filenames : {filenames}')
for filename in filenames:
print(f'check exists filename : {filename}')
if os.path.exists(filename):
print(f'append filename : {filename}')
valid_files.append(filename)
if not valid_files:
raise FileNotFoundError("Aucun fichier valide à fusionner.")
# Ajouter les fichiers valides au merger
for filename in valid_files:
merger.append(filename)
for file_path in file_paths:
merger.append(file_path)
# S'assurer que le dossier de destination existe
os.makedirs(os.path.dirname(output_filename), exist_ok=True)
# Sauvegarder le fichier fusionné
merger.write(output_filename)
# Sauvegarder le fichier fusionné en mémoire
merged_pdf = BytesIO()
merger.write(merged_pdf)
merger.close()
return output_filename
# Revenir au début du fichier en mémoire
merged_pdf.seek(0)
return merged_pdf
def rfToPDF(registerForm, filename):
"""
Génère le PDF d'un dossier d'inscription et l'associe au RegistrationForm.
"""
filename = filename.replace(" ", "_")
data = {
'pdf_title': f"Dossier d'inscription de {registerForm.student.first_name}",
'signatureDate': convertToStr(_now(), '%d-%m-%Y'),
@ -136,9 +129,6 @@ def rfToPDF(registerForm, filename):
'student': registerForm.student,
}
# S'assurer que le dossier parent existe
os.makedirs(os.path.dirname(filename), exist_ok=True)
# Générer le PDF
pdf = renderers.render_to_pdf('pdfs/dossier_inscription.html', data)
@ -147,19 +137,14 @@ def rfToPDF(registerForm, filename):
os.remove(registerForm.registration_file.path)
registerForm.registration_file.delete(save=False)
# Écrire le fichier directement
with open(filename, 'wb') as f:
f.write(pdf.content)
# Enregistrer directement le fichier dans le champ registration_file
registerForm.registration_file.save(
os.path.basename(filename),
File(BytesIO(pdf.content)), # Utilisation de BytesIO pour éviter l'écriture sur le disque
save=True
)
# Mettre à jour le champ registration_file du registerForm
with open(filename, 'rb') as f:
registerForm.registration_file.save(
os.path.basename(filename),
File(f),
save=True
)
return filename
return registerForm.registration_file.path
def delete_registration_files(registerForm):
"""