kopia lustrzana https://github.com/wagtail/wagtail
Rename `page_revision` to `revision` in `TaskState`
rodzic
c7da2988d5
commit
d8f9d9869a
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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">
|
||||
|
|
|
|||
|
|
@ -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">
|
||||
|
|
|
|||
|
|
@ -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(),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
)
|
||||
},
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
),
|
||||
),
|
||||
(
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
),
|
||||
]
|
||||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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):
|
||||
|
|
|
|||
Ładowanie…
Reference in New Issue