From 2df813aeb95dd1f499a33eebe1f96847795ce7c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Barrag=C3=A1n=20Merino?= Date: Mon, 29 Aug 2016 12:35:31 +0200 Subject: [PATCH] Fix error when delete projects directly in the admin panel list --- taiga/projects/admin.py | 34 +++++++++++++++++++++++++++++++++- taiga/projects/models.py | 1 + 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/taiga/projects/admin.py b/taiga/projects/admin.py index 94bfdc42..344f2344 100644 --- a/taiga/projects/admin.py +++ b/taiga/projects/admin.py @@ -176,8 +176,10 @@ class ProjectAdmin(admin.ModelAdmin): ## Actions actions = [ "make_public", - "make_private" + "make_private", + "delete_selected" ] + @transaction.atomic def make_public(self, request, queryset): total_updates = 0 @@ -210,6 +212,36 @@ class ProjectAdmin(admin.ModelAdmin): self.message_user(request, _("{count} successfully made private.").format(count=total_updates)) make_private.short_description = _("Make private") + def delete_selected(self, request, queryset): + # NOTE: This must be equal to taiga.projects.models.Project.delete_related_content + from taiga.events.apps import (connect_events_signals, + disconnect_events_signals) + from taiga.projects.tasks.apps import (connect_all_tasks_signals, + disconnect_all_tasks_signals) + from taiga.projects.userstories.apps import (connect_all_userstories_signals, + disconnect_all_userstories_signals) + from taiga.projects.issues.apps import (connect_all_issues_signals, + disconnect_all_issues_signals) + from taiga.projects.apps import (connect_memberships_signals, + disconnect_memberships_signals) + + disconnect_events_signals() + disconnect_all_issues_signals() + disconnect_all_tasks_signals() + disconnect_all_userstories_signals() + disconnect_memberships_signals() + + r = admin.actions.delete_selected(self, request, queryset) + + connect_events_signals() + connect_all_issues_signals() + connect_all_tasks_signals() + connect_all_userstories_signals() + connect_memberships_signals() + + return r + delete_selected.short_description = _("Delete selected %(verbose_name_plural)s") + # User Stories common admins class PointsAdmin(admin.ModelAdmin): diff --git a/taiga/projects/models.py b/taiga/projects/models.py index 7b3c218d..6f9b386c 100644 --- a/taiga/projects/models.py +++ b/taiga/projects/models.py @@ -461,6 +461,7 @@ class Project(ProjectDefaults, TaggedMixin, TagsColorsdMixin, models.Model): set_notify_policy_level_to_ignore(notify_policy) def delete_related_content(self): + # NOTE: Remember to update code in taiga.projects.admin.ProjectAdmin.delete_selected from taiga.events.apps import (connect_events_signals, disconnect_events_signals) from taiga.projects.tasks.apps import (connect_all_tasks_signals,