admin: use accessor when changing workflow (#57355)
this makes sure a cached copy of the workflow is not used to get fields.
This commit is contained in:
parent
2bfc1bd1d8
commit
38fb9383d9
|
@ -16,7 +16,7 @@ from wcs.data_sources import NamedDataSource
|
|||
from wcs.formdef import FormDef
|
||||
from wcs.qommon.errors import ConnectionError
|
||||
from wcs.qommon.http_request import HTTPRequest
|
||||
from wcs.workflows import Workflow
|
||||
from wcs.workflows import Workflow, WorkflowBackofficeFieldsFormDef
|
||||
from wcs.wscalls import NamedWsCall
|
||||
|
||||
from ..utilities import clean_temporary_pub, create_temporary_pub, get_app, login
|
||||
|
@ -498,6 +498,10 @@ def test_form_workflow_change(pub):
|
|||
workflow.store()
|
||||
workflow = Workflow(name='Workflow Two')
|
||||
workflow.possible_status = Workflow.get_default_workflow().possible_status[:]
|
||||
workflow.backoffice_fields_formdef = WorkflowBackofficeFieldsFormDef(workflow)
|
||||
workflow.backoffice_fields_formdef.fields = [
|
||||
fields.StringField(id='bo3-3x', label='bo field', type='string'),
|
||||
]
|
||||
workflow.store()
|
||||
|
||||
app = login(get_app(pub))
|
||||
|
@ -513,6 +517,9 @@ def test_form_workflow_change(pub):
|
|||
resp = resp.forms[0].submit('submit')
|
||||
assert FormDef.get(formdef.id).workflow_id == workflow.id
|
||||
|
||||
# run a SQL SELECT and we known all columns are defined.
|
||||
FormDef.get(formdef.id).data_class().select()
|
||||
|
||||
|
||||
def test_form_workflow_link(pub):
|
||||
create_superuser(pub)
|
||||
|
@ -572,6 +579,10 @@ def test_form_workflow_remapping(pub):
|
|||
workflow = Workflow(name='Workflow Two')
|
||||
# create it with a single status
|
||||
workflow.possible_status = [Workflow.get_default_workflow().possible_status[-1]]
|
||||
workflow.backoffice_fields_formdef = WorkflowBackofficeFieldsFormDef(workflow)
|
||||
workflow.backoffice_fields_formdef.fields = [
|
||||
fields.StringField(id='bo3-3x', label='bo field', type='string'),
|
||||
]
|
||||
workflow.store()
|
||||
|
||||
app = login(get_app(pub))
|
||||
|
@ -588,6 +599,10 @@ def test_form_workflow_remapping(pub):
|
|||
assert data_class.get(formdata1.id).status == 'wf-new'
|
||||
assert data_class.get(formdata2.id).status == 'draft'
|
||||
resp = resp.forms[0].submit()
|
||||
|
||||
# run a SQL SELECT and we known all columns are defined.
|
||||
FormDef.get(formdef.id).data_class().select()
|
||||
|
||||
assert data_class.get(formdata1.id).status == 'wf-finished'
|
||||
assert data_class.get(formdata2.id).status == 'draft'
|
||||
|
||||
|
@ -595,6 +610,10 @@ def test_form_workflow_remapping(pub):
|
|||
workflow2 = workflow
|
||||
workflow = Workflow(name='Workflow Three')
|
||||
workflow.possible_status = Workflow.get_default_workflow().possible_status[-2:][:]
|
||||
workflow.backoffice_fields_formdef = WorkflowBackofficeFieldsFormDef(workflow)
|
||||
workflow.backoffice_fields_formdef.fields = [
|
||||
fields.StringField(id='bo4', label='another bo field', type='string'),
|
||||
]
|
||||
workflow.store()
|
||||
|
||||
resp = app.get('/backoffice/forms/1/')
|
||||
|
@ -611,6 +630,9 @@ def test_form_workflow_remapping(pub):
|
|||
assert data_class.get(formdata1.id).status == 'wf-finished'
|
||||
assert data_class.get(formdata2.id).status == 'draft'
|
||||
|
||||
# run a SQL SELECT and we known all columns are defined.
|
||||
FormDef.get(formdef.id).data_class().select()
|
||||
|
||||
|
||||
def test_form_submitter_roles(pub):
|
||||
create_superuser(pub)
|
||||
|
|
|
@ -1099,7 +1099,7 @@ class FormDefPage(Directory):
|
|||
if workflow_id is None:
|
||||
workflow_id = self.formdef_default_workflow
|
||||
return redirect('workflow-status-remapping?new=%s' % workflow_id)
|
||||
self.formdef.workflow_id = workflow_id
|
||||
self.formdef.workflow = Workflow.get(workflow_id) if workflow_id else None
|
||||
self.formdef.store(comment=_('Workflow change'))
|
||||
return redirect('.')
|
||||
|
||||
|
@ -1145,9 +1145,9 @@ class FormDefPage(Directory):
|
|||
)
|
||||
self.workflow_status_remapping_submit(form)
|
||||
if new_workflow.id == self.formdef_default_workflow:
|
||||
self.formdef.workflow_id = None
|
||||
self.formdef.workflow = None
|
||||
else:
|
||||
self.formdef.workflow_id = new_workflow.id
|
||||
self.formdef.workflow = Workflow.get(new_workflow.id)
|
||||
self.formdef.store(comment=_('Workflow change'))
|
||||
# instruct formdef to update its security rules
|
||||
self.formdef.data_class().rebuild_security()
|
||||
|
|
Loading…
Reference in New Issue