From dcb7949c59865447964db75aea70476ae21316f4 Mon Sep 17 00:00:00 2001 From: Sage Abdullah Date: Mon, 19 Dec 2022 11:21:52 +0000 Subject: [PATCH] Use variables in `WorkflowLock.get_message()` to reduce queries --- wagtail/locks.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/wagtail/locks.py b/wagtail/locks.py index 9c772430ef..d7d1d4548c 100644 --- a/wagtail/locks.py +++ b/wagtail/locks.py @@ -147,7 +147,11 @@ class WorkflowLock(BaseLock): def get_message(self, user): if self.for_user(user): - if len(self.object.current_workflow_state.all_tasks_with_status()) == 1: + current_workflow_state = self.object.current_workflow_state + if ( + current_workflow_state + and len(current_workflow_state.all_tasks_with_status()) == 1 + ): # If only one task in workflow, show simple message if self.is_page: workflow_info = _("This page is currently awaiting moderation.") @@ -164,17 +168,17 @@ class WorkflowLock(BaseLock): "This page is awaiting '{task_name}' in the '{workflow_name}' workflow." ), task_name=self.task.name, - workflow_name=self.object.current_workflow_state.workflow.name, + workflow_name=current_workflow_state.workflow.name, ) else: workflow_info = format_html( # nosemgrep: translation-no-new-style-formatting (new-style only w/ format_html) _( - "This %(model_name)s is awaiting '{task_name}' in the '{workflow_name}' workflow." + "This {model_name} is awaiting '{task_name}' in the '{workflow_name}' workflow." ), model_name=self.object._meta.verbose_name, task_name=self.task.name, - workflow_name=self.object.current_workflow_state.workflow.name, + workflow_name=current_workflow_state.workflow.name, ) # Make sure message is correctly capitalised even if it # starts with model_name.