From a548612219c0344a9cc21bc007348259db60e095 Mon Sep 17 00:00:00 2001 From: root Date: Sun, 16 Aug 2026 21:32:04 +0000 Subject: [PATCH] Corriger la suppression des mails Outlook --- app_new/core/routes/admin.py | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/app_new/core/routes/admin.py b/app_new/core/routes/admin.py index 8d3d553..a49a1ec 100644 --- a/app_new/core/routes/admin.py +++ b/app_new/core/routes/admin.py @@ -328,7 +328,7 @@ def data_management(): """Page de gestion des données : voir et supprimer en masse.""" from ..models.maintenance import Intervention from ..models.equipment import Equipment - from ...outlook.models import OutlookMail, OutlookMailInterpretation + from ...outlook.models import OutlookMail, OutlookMailInterpretation, OutlookAttachment from ...ent.models import EntMessage from ...ent.interpretation_models import EntMessageInterpretation @@ -442,18 +442,24 @@ def delete_all_interventions(): @admin_required def delete_all_mails(): """Supprime tous les mails Outlook.""" - from ...outlook.models import OutlookMail, OutlookMailInterpretation + from ...outlook.models import OutlookMail, OutlookMailInterpretation, OutlookAttachment confirm = request.form.get('confirm_text', '') if confirm != 'SUPPRIMER': flash('Confirmation requise : tapez "SUPPRIMER" dans le champ de confirmation.', 'danger') return redirect(url_for('admin.data_management')) - # Supprimer d'abord les interpretations - OutlookMailInterpretation.query.delete() - # Supprimer les mails - count = OutlookMail.query.count() - OutlookMail.query.delete() - db.session.commit() + try: + # Les pièces jointes possèdent une FK vers les mails : elles doivent + # être supprimées avant leurs mails (le modèle seul ne garantit pas + # une cascade côté MariaDB). + OutlookAttachment.query.delete(synchronize_session=False) + OutlookMailInterpretation.query.delete(synchronize_session=False) + count = OutlookMail.query.count() + OutlookMail.query.delete(synchronize_session=False) + db.session.commit() + except Exception: + db.session.rollback() + raise flash(f'{count} mail(s) supprime(s) definitivement.', 'warning') return redirect(url_for('admin.data_management'))