Rename `page_revision` to `revision` in `TaskState`

pull/9817/head
Sage Abdullah 2022-12-12 14:27:34 +00:00
rodzic c7da2988d5
commit d8f9d9869a
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: EB1A33CC51CC0217
10 zmienionych plików z 51 dodań i 37 usunięć

Wyświetl plik

@ -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

Wyświetl plik

@ -17,7 +17,7 @@
</thead>
<tbody>
{% 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 %}
<tr>
<td class="title" valign="top">

Wyświetl plik

@ -17,7 +17,7 @@
</thead>
<tbody>
{% 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 %}
<tr>
<td class="title" valign="top">

Wyświetl plik

@ -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(),
)

Wyświetl plik

@ -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
)
},
)

Wyświetl plik

@ -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

Wyświetl plik

@ -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",
),
),
(

Wyświetl plik

@ -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",
),
]

Wyświetl plik

@ -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:

Wyświetl plik

@ -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):