From a0dda6b5b8a3e3f78358bcb949c9e9f12f778d24 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Tue, 11 Feb 2020 18:06:10 +0100 Subject: [PATCH 1/2] workflows: add accessor for related formdefs (#39656) --- wcs/admin/workflows.py | 2 +- wcs/workflows.py | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/wcs/admin/workflows.py b/wcs/admin/workflows.py index 9fe571b1..ffa9467b 100644 --- a/wcs/admin/workflows.py +++ b/wcs/admin/workflows.py @@ -1555,7 +1555,7 @@ class WorkflowPage(Directory): r += htmltext('') % _('Full Screen') r += htmltext('') # bo-block - formdefs = [x for x in FormDef.select() if x.workflow_id == self.workflow.id] + formdefs = self.workflow.formdefs() if formdefs: r += htmltext('
') r += htmltext('

%s

') % _('Forms') diff --git a/wcs/workflows.py b/wcs/workflows.py index 59a1c300..a80d6ee3 100644 --- a/wcs/workflows.py +++ b/wcs/workflows.py @@ -361,8 +361,7 @@ class Workflow(StorableObject): def update(job=None): # instruct all related formdefs to update. - for form in FormDef.select(lambda x: x.workflow_id == self.id, - ignore_migration=True, order_by='id'): + for form in self.formdefs(ignore_migration=True, order_by='id'): form.data_class().rebuild_security() if must_update: form.rebuild() @@ -506,7 +505,7 @@ class Workflow(StorableObject): return False def remove_self(self): - for form in FormDef.select(lambda x: x.workflow_id == self.id): + for form in self.formdefs(): form.workflow_id = None form.store() StorableObject.remove_self(self) @@ -820,6 +819,9 @@ class Workflow(StorableObject): return workflow + def formdefs(self, **kwargs): + return list(FormDef.select(lambda x: x.workflow_id == self.id, **kwargs)) + class XmlSerialisable(object): node_name = None @@ -1232,9 +1234,7 @@ class WorkflowGlobalActionTimeoutTrigger(WorkflowGlobalActionTrigger): # limit to formdata that are not finalized criterias.append(Contains('status', not_endpoint_status_ids)) - formdefs = [x for x in FormDef.select() if x.workflow_id == workflow.id] - - for formdef in formdefs: + for formdef in workflow.formdefs(): open_formdata_ids = [] data_class = formdef.data_class() for formdata in data_class.select(criterias, iterator=True): -- 2.24.0