kopia lustrzana https://github.com/wagtail/wagtail
Use latest revision that's relevant to the workflow
rodzic
fdaa99e4f9
commit
e962ad6004
|
@ -2844,6 +2844,12 @@ class WorkflowState(models.Model):
|
||||||
for state in approved_states:
|
for state in approved_states:
|
||||||
state.copy(update_attrs={'page_revision': revision})
|
state.copy(update_attrs={'page_revision': revision})
|
||||||
|
|
||||||
|
def revisions(self):
|
||||||
|
return PageRevision.objects.filter(
|
||||||
|
page_id=self.page_id,
|
||||||
|
id__in=self.task_states.values_list('page_revision_id', flat=True)
|
||||||
|
).defer('content_json')
|
||||||
|
|
||||||
def all_tasks_with_status(self):
|
def all_tasks_with_status(self):
|
||||||
"""
|
"""
|
||||||
Returns a list of Task objects that are linked with this workflow state's
|
Returns a list of Task objects that are linked with this workflow state's
|
||||||
|
@ -2854,13 +2860,15 @@ class WorkflowState(models.Model):
|
||||||
This is different to querying TaskState as it also returns tasks that haven't
|
This is different to querying TaskState as it also returns tasks that haven't
|
||||||
been started yet (so won't have a TaskState).
|
been started yet (so won't have a TaskState).
|
||||||
"""
|
"""
|
||||||
|
latest_revision_id = self.revisions().order_by('-created_at', '-id').values_list('id', flat=True).first()
|
||||||
|
|
||||||
tasks = list(
|
tasks = list(
|
||||||
self.workflow.tasks.annotate(
|
self.workflow.tasks.annotate(
|
||||||
status=Subquery(
|
status=Subquery(
|
||||||
TaskState.objects.filter(
|
TaskState.objects.filter(
|
||||||
task_id=OuterRef('id'),
|
task_id=OuterRef('id'),
|
||||||
workflow_state_id=self.id,
|
workflow_state_id=self.id,
|
||||||
page_revision_id=self.page.revisions.order_by('-created_at', '-id').values_list('id', flat=True).first()
|
page_revision_id=latest_revision_id
|
||||||
).values('status')
|
).values('status')
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
Ładowanie…
Reference in New Issue