kopia lustrzana https://github.com/wagtail/wagtail
Make workflow states cancel their active task states on cancel()
rodzic
e0699e0a67
commit
dec7f8ed46
|
@ -923,6 +923,8 @@ class TestDisableViews(TestCase, WagtailTestUtils):
|
|||
self.assertEqual(states.filter(status=WorkflowState.STATUS_IN_PROGRESS).count(), 0)
|
||||
self.assertEqual(states.filter(status=WorkflowState.STATUS_CANCELLED).count(), 1)
|
||||
|
||||
self.assertEqual(TaskState.objects.filter(workflow_state__workflow=self.workflow, status=TaskState.STATUS_IN_PROGRESS).count(), 0)
|
||||
|
||||
def test_disable_task(self):
|
||||
"""Test that deactivating a task sets it to inactive and cancels in progress states"""
|
||||
self.login(self.submitter)
|
||||
|
|
|
@ -2837,6 +2837,9 @@ class WorkflowState(models.Model):
|
|||
def update(self, user=None, next_task=None):
|
||||
"""Checks the status of the current task, and progresses (or ends) the workflow if appropriate. If the workflow progresses,
|
||||
next_task will be used to start a specific task next if provided."""
|
||||
if self.status != self.STATUS_IN_PROGRESS:
|
||||
# Updating a completed or cancelled workflow should have no effect
|
||||
return
|
||||
try:
|
||||
current_status = self.current_task_state.status
|
||||
except AttributeError:
|
||||
|
@ -2880,6 +2883,9 @@ class WorkflowState(models.Model):
|
|||
raise PermissionDenied
|
||||
self.status = self.STATUS_CANCELLED
|
||||
self.save()
|
||||
for state in self.task_states.filter(status=TaskState.STATUS_IN_PROGRESS):
|
||||
# Cancel all in progress task states
|
||||
state.specific.cancel(user=user)
|
||||
workflow_cancelled.send(sender=self.__class__, instance=self, user=user)
|
||||
|
||||
@transaction.atomic
|
||||
|
|
Ładowanie…
Reference in New Issue