From 2b9ddc27db81b8ea6d2a565c90bf994699d8cd77 Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Tue, 31 May 2016 12:38:03 +0200 Subject: [PATCH] [Backport] Improving project deletion --- taiga/projects/choices.py | 5 ++++- taiga/projects/services/projects.py | 2 ++ tests/integration/test_projects.py | 2 ++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/taiga/projects/choices.py b/taiga/projects/choices.py index 75a3630c..d1458c44 100644 --- a/taiga/projects/choices.py +++ b/taiga/projects/choices.py @@ -29,8 +29,11 @@ VIDEOCONFERENCES_CHOICES = ( BLOCKED_BY_NONPAYMENT = "blocked-by-nonpayment" BLOCKED_BY_STAFF = "blocked-by-staff" BLOCKED_BY_OWNER_LEAVING = "blocked-by-owner-leaving" +BLOCKED_BY_DELETING = "blocked-by-deleting" + BLOCKING_CODES = [ (BLOCKED_BY_NONPAYMENT, _("This project is blocked due to payment failure")), (BLOCKED_BY_STAFF, _("This project is blocked by admin staff")), - (BLOCKED_BY_OWNER_LEAVING, _("This project is blocked because the owner left")) + (BLOCKED_BY_OWNER_LEAVING, _("This project is blocked because the owner left")), + (BLOCKED_BY_DELETING, _("This project is blocked while it's deleted")) ] diff --git a/taiga/projects/services/projects.py b/taiga/projects/services/projects.py index b1befaf7..49abc2e5 100644 --- a/taiga/projects/services/projects.py +++ b/taiga/projects/services/projects.py @@ -19,6 +19,7 @@ from django.apps import apps from django.utils.translation import ugettext as _ from taiga.celery import app +from .. import choices ERROR_MAX_PUBLIC_PROJECTS_MEMBERSHIPS = 'max_public_projects_memberships' ERROR_MAX_PRIVATE_PROJECTS_MEMBERSHIPS = 'max_private_projects_memberships' @@ -158,6 +159,7 @@ def check_if_project_is_out_of_owner_limits(project): def orphan_project(project): project.memberships.filter(user=project.owner).delete() project.owner = None + project.blocked_code = choices.BLOCKED_BY_DELETING project.save() diff --git a/tests/integration/test_projects.py b/tests/integration/test_projects.py index 3394db5a..9e6279c0 100644 --- a/tests/integration/test_projects.py +++ b/tests/integration/test_projects.py @@ -10,6 +10,7 @@ from taiga.projects.services import stats as stats_services from taiga.projects.history.services import take_snapshot from taiga.permissions.permissions import ANON_PERMISSIONS from taiga.projects.models import Project +from taiga.projects.choices import BLOCKED_BY_DELETING from .. import factories as f from ..utils import DUMMY_BMP_DATA @@ -1835,6 +1836,7 @@ def test_delete_project_with_celery_enabled(client, settings): project = Project.objects.get(id=project.id) assert project.owner == None assert project.memberships.count() == 0 + assert project.blocked_code == BLOCKED_BY_DELETING delete_project_mock.delay.assert_called_once_with(project.id)