def _write_tab_position(workflow: Workflow, tab_slug: str) -> None: """Write position in DB, or raise (Workflow|Tab).DoesNotExist.""" with workflow.cooperative_lock(): # raises Workflow.DoesNotExist # raises Tab.DoesNotExist, e.g. if tab.is_deleted tab = workflow.live_tabs.get(slug=tab_slug) workflow.selected_tab_position = tab.position workflow.save(update_fields=['selected_tab_position'])
def _write_wf_module_position(workflow: Workflow, wf_module_id: int) -> None: """Write position in DB, or raise (Workflow|Tab|WfModule).DoesNotExist.""" with workflow.cooperative_lock(): # raises Workflow.DoesNotExist # Raises WfModule.DoesNotExist, e.g. if tab.is_deleted wf_module = WfModule.live_in_workflow(workflow).get(pk=wf_module_id) tab = wf_module.tab tab.selected_wf_module_position = wf_module.order tab.save(update_fields=['selected_wf_module_position']) workflow.selected_tab_position = tab.position workflow.save(update_fields=['selected_tab_position'])