From d8f9d9869ae7ade815797b262660f9adca58bdbc Mon Sep 17 00:00:00 2001 From: Sage Abdullah Date: Mon, 12 Dec 2022 14:27:34 +0000 Subject: [PATCH] Rename `page_revision` to `revision` in `TaskState` --- docs/reference/pages/model_reference.md | 4 +-- .../user_pages_in_workflow_moderation.html | 2 +- .../home/workflow_pages_to_moderate.html | 2 +- wagtail/admin/views/home.py | 8 ++--- wagtail/admin/views/pages/history.py | 4 +-- wagtail/admin/views/pages/workflow.py | 6 ++-- .../migrations/0047_add_workflow_models.py | 2 +- .../0079_rename_taskstate_page_revision.py | 18 ++++++++++ wagtail/models/__init__.py | 36 +++++++++---------- wagtail/tests/test_workflow.py | 6 ++-- 10 files changed, 51 insertions(+), 37 deletions(-) create mode 100644 wagtail/migrations/0079_rename_taskstate_page_revision.py diff --git a/docs/reference/pages/model_reference.md b/docs/reference/pages/model_reference.md index af1870db7a..b2bff7f084 100644 --- a/docs/reference/pages/model_reference.md +++ b/docs/reference/pages/model_reference.md @@ -1050,11 +1050,11 @@ Task states store state information about the progress of a task on a particular The workflow state which started this task state. - .. attribute:: page_revision + .. attribute:: revision (foreign key to ``Revision``) - The page revision this task state was created on. + The revision this task state was created on. .. attribute:: task diff --git a/wagtail/admin/templates/wagtailadmin/home/user_pages_in_workflow_moderation.html b/wagtail/admin/templates/wagtailadmin/home/user_pages_in_workflow_moderation.html index 6045d93661..3541fc89a9 100644 --- a/wagtail/admin/templates/wagtailadmin/home/user_pages_in_workflow_moderation.html +++ b/wagtail/admin/templates/wagtailadmin/home/user_pages_in_workflow_moderation.html @@ -17,7 +17,7 @@ {% for workflow_state in workflow_states %} - {% with workflow_state.current_task_state.page_revision as revision %} + {% with workflow_state.current_task_state.revision as revision %} {% page_permissions workflow_state.page as page_perms %} diff --git a/wagtail/admin/templates/wagtailadmin/home/workflow_pages_to_moderate.html b/wagtail/admin/templates/wagtailadmin/home/workflow_pages_to_moderate.html index c9186ac61c..efa4ccf936 100644 --- a/wagtail/admin/templates/wagtailadmin/home/workflow_pages_to_moderate.html +++ b/wagtail/admin/templates/wagtailadmin/home/workflow_pages_to_moderate.html @@ -17,7 +17,7 @@ {% for task_state, actions, workflow_tasks in states %} - {% with task_state.page_revision as revision %} + {% with task_state.revision as revision %} {% page_permissions revision.content_object as page_perms %} diff --git a/wagtail/admin/views/home.py b/wagtail/admin/views/home.py index 5736582214..81992b71f7 100644 --- a/wagtail/admin/views/home.py +++ b/wagtail/admin/views/home.py @@ -126,7 +126,7 @@ class UserPagesInWorkflowModerationPanel(Component): "page", "current_task_state", "current_task_state__task", - "current_task_state__page_revision", + "current_task_state__revision", ) .order_by("-current_task_state__started_at") ) @@ -148,9 +148,9 @@ class WorkflowPagesToModeratePanel(Component): states = ( TaskState.objects.reviewable_by(request.user) .select_related( - "page_revision", + "revision", "task", - "page_revision__user", + "revision__user", ) .order_by("-started_at") ) @@ -158,7 +158,7 @@ class WorkflowPagesToModeratePanel(Component): ( state, state.task.specific.get_actions( - page=state.page_revision.content_object, user=request.user + page=state.revision.content_object, user=request.user ), state.workflow_state.all_tasks_with_status(), ) diff --git a/wagtail/admin/views/pages/history.py b/wagtail/admin/views/pages/history.py index 4bc490c687..007b2e437b 100644 --- a/wagtail/admin/views/pages/history.py +++ b/wagtail/admin/views/pages/history.py @@ -90,7 +90,7 @@ def workflow_history_detail(request, page_id, workflow_state_id): page_revisions = Revision.page_revisions.filter( object_id=str(page.id), id__in=TaskState.objects.filter(workflow_state=workflow_state).values_list( - "page_revision_id", flat=True + "revision_id", flat=True ), ).order_by("-created_at") @@ -101,7 +101,7 @@ def workflow_history_detail(request, page_id, workflow_state_id): { task_state.task: task_state for task_state in TaskState.objects.filter( - workflow_state=workflow_state, page_revision=page_revision + workflow_state=workflow_state, revision=page_revision ) }, ) diff --git a/wagtail/admin/views/pages/workflow.py b/wagtail/admin/views/pages/workflow.py index 1eb19ab70e..bf3a134597 100644 --- a/wagtail/admin/views/pages/workflow.py +++ b/wagtail/admin/views/pages/workflow.py @@ -240,8 +240,8 @@ def preview_revision_for_task(request, page_id, task_id): task = get_object_or_404(Task, id=task_id).specific try: task_state = TaskState.objects.get( - page_revision__base_content_type=get_default_page_content_type(), - page_revision__object_id=page.id, + revision__base_content_type=get_default_page_content_type(), + revision__object_id=page.id, task=task, status=TaskState.STATUS_IN_PROGRESS, ) @@ -255,7 +255,7 @@ def preview_revision_for_task(request, page_id, task_id): ) return redirect("wagtailadmin_home") - revision = task_state.page_revision + revision = task_state.revision if not task.get_actions(page, request.user): raise PermissionDenied diff --git a/wagtail/migrations/0047_add_workflow_models.py b/wagtail/migrations/0047_add_workflow_models.py index 1efacf6542..5731af681a 100755 --- a/wagtail/migrations/0047_add_workflow_models.py +++ b/wagtail/migrations/0047_add_workflow_models.py @@ -104,7 +104,7 @@ class Migration(migrations.Migration): on_delete=django.db.models.deletion.CASCADE, related_name="task_states", to="wagtailcore.PageRevision", - verbose_name="page revision", + verbose_name="revision", ), ), ( diff --git a/wagtail/migrations/0079_rename_taskstate_page_revision.py b/wagtail/migrations/0079_rename_taskstate_page_revision.py new file mode 100644 index 0000000000..e56b8ac8de --- /dev/null +++ b/wagtail/migrations/0079_rename_taskstate_page_revision.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.dev20221212120043 on 2022-12-12 13:03 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("wagtailcore", "0078_referenceindex"), + ] + + operations = [ + migrations.RenameField( + model_name="taskstate", + old_name="page_revision", + new_name="revision", + ), + ] diff --git a/wagtail/models/__init__.py b/wagtail/models/__init__.py index 9d37c04c25..db58f96e5d 100644 --- a/wagtail/models/__init__.py +++ b/wagtail/models/__init__.py @@ -3578,7 +3578,7 @@ class Task(models.Model): """Start this task on the provided workflow state by creating an instance of TaskState""" task_state = self.get_task_state_class()(workflow_state=workflow_state) task_state.status = TaskState.STATUS_IN_PROGRESS - task_state.page_revision = workflow_state.page.get_latest_revision() + task_state.revision = workflow_state.page.get_latest_revision() task_state.task = self task_state.save() task_submitted.send( @@ -3925,7 +3925,7 @@ class WorkflowState(models.Model): """Put a STATUS_NEEDS_CHANGES workflow state back into STATUS_IN_PROGRESS, and restart the current task""" if self.status != self.STATUS_NEEDS_CHANGES: raise PermissionDenied - revision = self.current_task_state.page_revision + revision = self.current_task_state.revision current_task_state = self.current_task_state self.current_task_state = None self.status = self.STATUS_IN_PROGRESS @@ -4016,7 +4016,7 @@ class WorkflowState(models.Model): ) if getattr(settings, "WAGTAIL_WORKFLOW_REQUIRE_REAPPROVAL_ON_EDIT", False): successful_task_states = successful_task_states.filter( - page_revision=self.page.get_latest_revision() + revision=self.page.get_latest_revision() ) return successful_task_states @@ -4053,7 +4053,7 @@ class WorkflowState(models.Model): }, } }, - revision=self.current_task_state.page_revision, + revision=self.current_task_state.revision, user=user, ) @@ -4073,18 +4073,18 @@ class WorkflowState(models.Model): workflow_approved.send(sender=self.__class__, instance=self, user=user) def copy_approved_task_states_to_revision(self, revision): - """This creates copies of previously approved task states with page_revision set to a different revision.""" + """This creates copies of previously approved task states with revision set to a different revision.""" approved_states = TaskState.objects.filter( workflow_state=self, status=TaskState.STATUS_APPROVED ) for state in approved_states: - state.copy(update_attrs={"page_revision": revision}) + state.copy(update_attrs={"revision": revision}) def revisions(self): """Returns all page revisions associated with task states linked to the current workflow state""" return Revision.page_revisions.filter( object_id=str(self.page_id), - id__in=self.task_states.values_list("page_revision_id", flat=True), + id__in=self.task_states.values_list("revision_id", flat=True), ).defer("content") def _get_applicable_task_states(self): @@ -4099,7 +4099,7 @@ class WorkflowState(models.Model): .values_list("id", flat=True) .first() ) - task_states = task_states.filter(page_revision_id=latest_revision_id) + task_states = task_states.filter(revision_id=latest_revision_id) return task_states def all_tasks_with_status(self): @@ -4203,7 +4203,7 @@ class TaskStateManager(models.Manager): class TaskState(models.Model): - """Tracks the status of a given Task for a particular page revision.""" + """Tracks the status of a given Task for a particular revision.""" STATUS_IN_PROGRESS = "in_progress" STATUS_APPROVED = "approved" @@ -4224,10 +4224,10 @@ class TaskState(models.Model): verbose_name=_("workflow state"), related_name="task_states", ) - page_revision = models.ForeignKey( + revision = models.ForeignKey( "Revision", on_delete=models.CASCADE, - verbose_name=_("page revision"), + verbose_name=_("revision"), related_name="task_states", ) task = models.ForeignKey( @@ -4277,11 +4277,9 @@ class TaskState(models.Model): self.content_type = ContentType.objects.get_for_model(self) def __str__(self): - return _( - "Task '%(task_name)s' on Page Revision '%(revision_info)s': %(status)s" - ) % { + return _("Task '%(task_name)s' on Revision '%(revision_info)s': %(status)s") % { "task_name": self.task, - "revision_info": self.page_revision, + "revision_info": self.revision, "status": self.status, } @@ -4298,7 +4296,7 @@ class TaskState(models.Model): # Cannot locate a model class for this content type. This might happen # if the codebase and database are out of sync (e.g. the model exists # on a different git branch and we haven't rolled back migrations before - # switching branches); if so, the best we can do is return the page + # switching branches); if so, the best we can do is return the task state # unchanged. return self elif isinstance(self, model_class): @@ -4404,13 +4402,13 @@ class TaskState(models.Model): def log_state_change_action(self, user, action): """Log the approval/rejection action""" - page = self.page_revision.as_object() + obj = self.revision.as_object() next_task = self.workflow_state.get_next_task() next_task_data = None if next_task: next_task_data = {"id": next_task.id, "title": next_task.name} log( - instance=page, + instance=obj, action="wagtail.workflow.{}".format(action), user=user, data={ @@ -4427,7 +4425,7 @@ class TaskState(models.Model): }, "comment": self.get_comment(), }, - revision=self.page_revision, + revision=self.revision, ) class Meta: diff --git a/wagtail/tests/test_workflow.py b/wagtail/tests/test_workflow.py index 096d51a3b8..9e26aad7d2 100644 --- a/wagtail/tests/test_workflow.py +++ b/wagtail/tests/test_workflow.py @@ -170,7 +170,7 @@ class TestWorkflows(TestCase): task_state = workflow_state.current_task_state self.assertEqual(task_state.task, task_1) self.assertEqual(task_state.status, "in_progress") - self.assertEqual(task_state.page_revision, homepage.get_latest_revision()) + self.assertEqual(task_state.revision, homepage.get_latest_revision()) if settings.USE_TZ: self.assertEqual( task_state.started_at, @@ -231,9 +231,7 @@ class TestWorkflows(TestCase): ) self.assertEqual(workflow_state.status, "approved") page.refresh_from_db() - self.assertEqual( - page.live_revision, workflow_state.current_task_state.page_revision - ) + self.assertEqual(page.live_revision, workflow_state.current_task_state.revision) @override_settings(WAGTAIL_WORKFLOW_REQUIRE_REAPPROVAL_ON_EDIT=True) def test_workflow_resets_when_new_revision_created(self):