From 2e21db3553d13c8827b879ea2be15451f74f6b2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Espino?= Date: Thu, 14 Aug 2014 10:08:07 +0200 Subject: [PATCH] Allowing delete project --- taiga/projects/api.py | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/taiga/projects/api.py b/taiga/projects/api.py index fe5edfbc..87c17dc2 100644 --- a/taiga/projects/api.py +++ b/taiga/projects/api.py @@ -16,7 +16,7 @@ import uuid -from django.db.models import Q +from django.db.models import Q, signals from django.utils.translation import ugettext_lazy as _ from django.shortcuts import get_object_or_404 from django.db import transaction as tx @@ -149,6 +149,32 @@ class ProjectViewSet(ModelCrudViewSet): super().pre_save(obj) + def destroy(self, request, *args, **kwargs): + obj = self.get_object_or_none() + self.check_permissions(request, 'destroy', obj) + + signals.post_delete.disconnect(sender=UserStory, dispatch_uid="user_story_update_project_colors_on_delete") + signals.post_delete.disconnect(sender=Issue, dispatch_uid="issue_update_project_colors_on_delete") + signals.post_delete.disconnect(dispatch_uid="refprojdel") + signals.post_delete.disconnect(dispatch_uid='update_watchers_on_membership_post_delete') + signals.post_delete.disconnect(sender=Task, dispatch_uid="tasks_milestone_close_handler_on_delete") + signals.post_delete.disconnect(sender=Task, dispatch_uid="tasks_us_close_handler_on_delete") + signals.post_delete.disconnect(sender=Task, dispatch_uid="task_update_project_colors_on_delete") + + obj.tasks.all().delete() + obj.user_stories.all().delete() + obj.issues.all().delete() + obj.memberships.all().delete() + obj.roles.all().delete() + + if obj is None: + raise Http404 + + self.pre_delete(obj) + self.pre_conditions_on_delete(obj) + obj.delete() + self.post_delete(obj) + return Response(status=status.HTTP_204_NO_CONTENT) class MembershipViewSet(ModelCrudViewSet): model = models.Membership