Merge pull request #559 from taigaio/issue-3282-error-500-when-deleting-project-from-admin
Issue #3283: Taiga 1.8.0: HTTP error 500 while trying to delete proje…remotes/origin/logger
commit
5b83e8c450
|
@ -98,6 +98,9 @@ class ProjectAdmin(admin.ModelAdmin):
|
|||
memberships__project=self.obj)
|
||||
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
|
||||
|
||||
|
|
|
@ -253,36 +253,13 @@ class ProjectViewSet(LikedResourceMixin, HistoryResourceMixin, ModelCrudViewSet)
|
|||
super().pre_save(obj)
|
||||
|
||||
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()
|
||||
self.check_permissions(request, 'destroy', obj)
|
||||
|
||||
if obj is None:
|
||||
raise Http404
|
||||
|
||||
disconnect_events_signals()
|
||||
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()
|
||||
obj.delete_related_content()
|
||||
|
||||
self.pre_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)
|
||||
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):
|
||||
project = models.OneToOneField("Project", null=False, blank=False,
|
||||
|
|
Loading…
Reference in New Issue