From 3a0bc01a55017c808f2ff99f855d3c077a3edea0 Mon Sep 17 00:00:00 2001 From: Leo Hemsted Date: Wed, 28 Jun 2017 17:19:53 +0100 Subject: [PATCH] fix service_delete function to clean up template_redacted objects properly --- app/dao/services_dao.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/dao/services_dao.py b/app/dao/services_dao.py index 282e9e9f0..e39778217 100644 --- a/app/dao/services_dao.py +++ b/app/dao/services_dao.py @@ -202,13 +202,16 @@ def dao_remove_user_from_service(service, user): def delete_service_and_all_associated_db_objects(service): def _delete_commit(query): - query.delete() + query.delete(synchronize_session=False) db.session.commit() job_stats = JobStatistics.query.join(Job).filter(Job.service_id == service.id) list(map(db.session.delete, job_stats)) db.session.commit() + subq = db.session.query(Template.id).filter_by(service=service).subquery() + _delete_commit(TemplateRedacted.query.filter(TemplateRedacted.template_id.in_(subq))) + _delete_commit(NotificationStatistics.query.filter_by(service=service)) _delete_commit(TemplateStatistics.query.filter_by(service=service)) _delete_commit(ProviderStatistics.query.filter_by(service=service)) @@ -219,7 +222,6 @@ def delete_service_and_all_associated_db_objects(service): _delete_commit(Job.query.filter_by(service=service)) _delete_commit(NotificationHistory.query.filter_by(service=service)) _delete_commit(Notification.query.filter_by(service=service)) - _delete_commit(TemplateRedacted.query.filter_by(service=service)) _delete_commit(Template.query.filter_by(service=service)) _delete_commit(TemplateHistory.query.filter_by(service_id=service.id)) _delete_commit(ServicePermission.query.filter_by(service_id=service.id))