diff --git a/wagtail/models/__init__.py b/wagtail/models/__init__.py index 26e00c01c9..b424cad37b 100644 --- a/wagtail/models/__init__.py +++ b/wagtail/models/__init__.py @@ -112,7 +112,7 @@ from .media import ( # noqa: F401 UploadedFile, get_root_collection_id, ) -from .orderable import Orderable +from .orderable import Orderable # noqa: F401 from .panels import CommentPanelPlaceholder, PanelPlaceholder from .preview import PreviewableMixin from .reference_index import ReferenceIndex # noqa: F401 @@ -133,6 +133,7 @@ from .workflows import ( # noqa: F401 WorkflowState, WorkflowStateManager, WorkflowStateQuerySet, + WorkflowTask, ) logger = logging.getLogger("wagtail") @@ -2703,27 +2704,6 @@ class WorkflowPage(models.Model): verbose_name_plural = _("workflow pages") -class WorkflowTask(Orderable): - workflow = ParentalKey( - "Workflow", - on_delete=models.CASCADE, - verbose_name=_("workflow_tasks"), - related_name="workflow_tasks", - ) - task = models.ForeignKey( - "Task", - on_delete=models.CASCADE, - verbose_name=_("task"), - related_name="workflow_tasks", - limit_choices_to={"active": True}, - ) - - class Meta(Orderable.Meta): - unique_together = [("workflow", "task")] - verbose_name = _("workflow task order") - verbose_name_plural = _("workflow task orders") - - class TaskQuerySet(SpecificQuerySetMixin, models.QuerySet): def active(self): return self.filter(active=True) diff --git a/wagtail/models/workflows.py b/wagtail/models/workflows.py index c5e959799e..c320c7d1c6 100644 --- a/wagtail/models/workflows.py +++ b/wagtail/models/workflows.py @@ -7,6 +7,7 @@ from django.db.models import Q from django.db.models.expressions import OuterRef, Subquery from django.utils.module_loading import import_string from django.utils.translation import gettext_lazy as _ +from modelcluster.fields import ParentalKey from modelcluster.models import ( ClusterableModel, ) @@ -21,6 +22,7 @@ from wagtail.signals import ( ) from .locking import LockableMixin +from .orderable import Orderable from .revisions import Revision @@ -616,3 +618,24 @@ class AbstractWorkflow(ClusterableModel): class Workflow(AbstractWorkflow): pass + + +class WorkflowTask(Orderable): + workflow = ParentalKey( + "Workflow", + on_delete=models.CASCADE, + verbose_name=_("workflow_tasks"), + related_name="workflow_tasks", + ) + task = models.ForeignKey( + "Task", + on_delete=models.CASCADE, + verbose_name=_("task"), + related_name="workflow_tasks", + limit_choices_to={"active": True}, + ) + + class Meta(Orderable.Meta): + unique_together = [("workflow", "task")] + verbose_name = _("workflow task order") + verbose_name_plural = _("workflow task orders")