Improving project deletion

remotes/origin/issue/4795/notification_even_they_are_disabled
Alejandro Alonso 2016-05-31 12:38:03 +02:00
parent 84e2b90168
commit 03674f8962
3 changed files with 8 additions and 1 deletions

View File

@ -29,8 +29,11 @@ VIDEOCONFERENCES_CHOICES = (
BLOCKED_BY_NONPAYMENT = "blocked-by-nonpayment" BLOCKED_BY_NONPAYMENT = "blocked-by-nonpayment"
BLOCKED_BY_STAFF = "blocked-by-staff" BLOCKED_BY_STAFF = "blocked-by-staff"
BLOCKED_BY_OWNER_LEAVING = "blocked-by-owner-leaving" BLOCKED_BY_OWNER_LEAVING = "blocked-by-owner-leaving"
BLOCKED_BY_DELETING = "blocked-by-deleting"
BLOCKING_CODES = [ BLOCKING_CODES = [
(BLOCKED_BY_NONPAYMENT, _("This project is blocked due to payment failure")), (BLOCKED_BY_NONPAYMENT, _("This project is blocked due to payment failure")),
(BLOCKED_BY_STAFF, _("This project is blocked by admin staff")), (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"))
] ]

View File

@ -19,6 +19,7 @@
from django.apps import apps from django.apps import apps
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
from taiga.celery import app from taiga.celery import app
from .. import choices
ERROR_MAX_PUBLIC_PROJECTS_MEMBERSHIPS = 'max_public_projects_memberships' ERROR_MAX_PUBLIC_PROJECTS_MEMBERSHIPS = 'max_public_projects_memberships'
ERROR_MAX_PRIVATE_PROJECTS_MEMBERSHIPS = 'max_private_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): def orphan_project(project):
project.memberships.filter(user=project.owner).delete() project.memberships.filter(user=project.owner).delete()
project.owner = None project.owner = None
project.blocked_code = choices.BLOCKED_BY_DELETING
project.save() project.save()

View File

@ -10,6 +10,7 @@ from taiga.projects.services import stats as stats_services
from taiga.projects.history.services import take_snapshot from taiga.projects.history.services import take_snapshot
from taiga.permissions.choices import ANON_PERMISSIONS from taiga.permissions.choices import ANON_PERMISSIONS
from taiga.projects.models import Project from taiga.projects.models import Project
from taiga.projects.choices import BLOCKED_BY_DELETING
from .. import factories as f from .. import factories as f
from ..utils import DUMMY_BMP_DATA 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) project = Project.objects.get(id=project.id)
assert project.owner == None assert project.owner == None
assert project.memberships.count() == 0 assert project.memberships.count() == 0
assert project.blocked_code == BLOCKED_BY_DELETING
delete_project_mock.delay.assert_called_once_with(project.id) delete_project_mock.delay.assert_called_once_with(project.id)