feat: Gestion de la sauvegarde du fichier d'inscription / affichage du

fichier avec le bon nom / possibilité de refuser un DI
This commit is contained in:
N3WT DE COMPET
2025-03-31 20:13:10 +02:00
parent e0bfd3e115
commit d6edf250bb
11 changed files with 281 additions and 102 deletions

View File

@ -16,7 +16,9 @@ from enum import Enum
import random
import string
from rest_framework.parsers import JSONParser
import pymupdf
from PyPDF2 import PdfMerger
import shutil
def recupereListeFichesInscription():
"""
@ -96,23 +98,29 @@ def merge_files_pdf(filenames, output_filename):
Fusionne plusieurs fichiers PDF en un seul document.
Vérifie l'existence des fichiers sources avant la fusion.
"""
merger = pymupdf.open()
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)
# Fusionner les fichiers valides
if not valid_files:
raise FileNotFoundError("Aucun fichier valide à fusionner.")
# Ajouter les fichiers valides au merger
for filename in valid_files:
merger.insert_file(filename)
merger.append(filename)
# S'assurer que le dossier de destination existe
os.makedirs(os.path.dirname(output_filename), exist_ok=True)
# Sauvegarder le fichier fusionné
merger.save(output_filename)
merger.write(output_filename)
merger.close()
return output_filename
@ -134,6 +142,11 @@ def rfToPDF(registerForm, filename):
# Générer le PDF
pdf = renderers.render_to_pdf('pdfs/dossier_inscription.html', data)
# Vérifier si un fichier avec le même nom existe déjà et le supprimer
if registerForm.registration_file and os.path.exists(registerForm.registration_file.path):
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)
@ -146,4 +159,16 @@ def rfToPDF(registerForm, filename):
save=True
)
return registerForm.registration_file
return filename
def delete_registration_files(registerForm):
"""
Supprime le fichier et le dossier associés à un RegistrationForm.
"""
base_dir = f"registration_files/dossier_rf_{registerForm.pk}"
if registerForm.registration_file and os.path.exists(registerForm.registration_file.path):
os.remove(registerForm.registration_file.path)
registerForm.registration_file.delete(save=False)
if os.path.exists(base_dir):
shutil.rmtree(base_dir)