Issue #3283: Taiga 1.8.0: HTTP error 500 while trying to delete project as admin.
parent
a28b04a154
commit
93412840c9
|
@ -98,6 +98,9 @@ class ProjectAdmin(admin.ModelAdmin):
|
||||||
memberships__project=self.obj)
|
memberships__project=self.obj)
|
||||||
return super().formfield_for_manytomany(db_field, request, **kwargs)
|
return super().formfield_for_manytomany(db_field, request, **kwargs)
|
||||||
|
|
||||||
|
def delete_model(self, request, obj):
|
||||||
|
obj.delete_related_content()
|
||||||
|
super().delete_model(request, obj)
|
||||||
|
|
||||||
# User Stories common admins
|
# User Stories common admins
|
||||||
|
|
||||||
|
|
|
@ -253,36 +253,13 @@ class ProjectViewSet(LikedResourceMixin, HistoryResourceMixin, ModelCrudViewSet)
|
||||||
super().pre_save(obj)
|
super().pre_save(obj)
|
||||||
|
|
||||||
def destroy(self, request, *args, **kwargs):
|
def destroy(self, request, *args, **kwargs):
|
||||||
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
|
|
||||||
|
|
||||||
obj = self.get_object_or_none()
|
obj = self.get_object_or_none()
|
||||||
self.check_permissions(request, 'destroy', obj)
|
self.check_permissions(request, 'destroy', obj)
|
||||||
|
|
||||||
if obj is None:
|
if obj is None:
|
||||||
raise Http404
|
raise Http404
|
||||||
|
|
||||||
disconnect_events_signals()
|
obj.delete_related_content()
|
||||||
disconnect_all_issues_signals()
|
|
||||||
disconnect_all_tasks_signals()
|
|
||||||
disconnect_all_userstories_signals()
|
|
||||||
disconnect_memberships_signals()
|
|
||||||
|
|
||||||
try:
|
|
||||||
obj.tasks.all().delete()
|
|
||||||
obj.user_stories.all().delete()
|
|
||||||
obj.issues.all().delete()
|
|
||||||
obj.memberships.all().delete()
|
|
||||||
obj.roles.all().delete()
|
|
||||||
finally:
|
|
||||||
connect_events_signals()
|
|
||||||
connect_all_issues_signals()
|
|
||||||
connect_all_tasks_signals()
|
|
||||||
connect_all_userstories_signals()
|
|
||||||
connect_memberships_signals()
|
|
||||||
|
|
||||||
self.pre_delete(obj)
|
self.pre_delete(obj)
|
||||||
self.pre_conditions_on_delete(obj)
|
self.pre_conditions_on_delete(obj)
|
||||||
|
|
|
@ -308,6 +308,31 @@ class Project(ProjectDefaults, TaggedMixin, models.Model):
|
||||||
notify_policy = get_notify_policy(self, user)
|
notify_policy = get_notify_policy(self, user)
|
||||||
set_notify_policy_level_to_ignore(notify_policy)
|
set_notify_policy_level_to_ignore(notify_policy)
|
||||||
|
|
||||||
|
def delete_related_content(self):
|
||||||
|
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()
|
||||||
|
|
||||||
|
try:
|
||||||
|
self.tasks.all().delete()
|
||||||
|
self.user_stories.all().delete()
|
||||||
|
self.issues.all().delete()
|
||||||
|
self.memberships.all().delete()
|
||||||
|
self.roles.all().delete()
|
||||||
|
finally:
|
||||||
|
connect_events_signals()
|
||||||
|
connect_all_issues_signals()
|
||||||
|
connect_all_tasks_signals()
|
||||||
|
connect_all_userstories_signals()
|
||||||
|
connect_memberships_signals()
|
||||||
|
|
||||||
class ProjectModulesConfig(models.Model):
|
class ProjectModulesConfig(models.Model):
|
||||||
project = models.OneToOneField("Project", null=False, blank=False,
|
project = models.OneToOneField("Project", null=False, blank=False,
|
||||||
|
|
Loading…
Reference in New Issue