backoffice: add support for default value for date workflow options (#88346)
This commit is contained in:
parent
9afbbccb13
commit
70b7087ad9
|
@ -22,6 +22,7 @@ from wcs.workflows import (
|
||||||
Workflow,
|
Workflow,
|
||||||
WorkflowBackofficeFieldsFormDef,
|
WorkflowBackofficeFieldsFormDef,
|
||||||
WorkflowCriticalityLevel,
|
WorkflowCriticalityLevel,
|
||||||
|
WorkflowVariablesFieldsFormDef,
|
||||||
)
|
)
|
||||||
|
|
||||||
from ..utilities import clean_temporary_pub, create_temporary_pub, get_app, login
|
from ..utilities import clean_temporary_pub, create_temporary_pub, get_app, login
|
||||||
|
@ -1205,3 +1206,72 @@ def test_inspect_page_idp_role(pub):
|
||||||
resp.pyquery('[data-function-key="_receiver"] a').attr.href
|
resp.pyquery('[data-function-key="_receiver"] a').attr.href
|
||||||
== 'https://idp.example.net/manage/roles/uuid:d4b59e1ffb204dfd99fd3760f4952999/'
|
== 'https://idp.example.net/manage/roles/uuid:d4b59e1ffb204dfd99fd3760f4952999/'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_inspect_page_form_option(pub):
|
||||||
|
create_user(pub, is_admin=True)
|
||||||
|
FormDef.wipe()
|
||||||
|
|
||||||
|
wf = Workflow(name='variables')
|
||||||
|
wf.variables_formdef = WorkflowVariablesFieldsFormDef(workflow=wf)
|
||||||
|
wf.add_status('st1')
|
||||||
|
wf.store()
|
||||||
|
|
||||||
|
formdef = FormDef()
|
||||||
|
formdef.name = 'form title'
|
||||||
|
formdef.fields = []
|
||||||
|
formdef.workflow = wf
|
||||||
|
formdef.store()
|
||||||
|
formdef.data_class().wipe()
|
||||||
|
|
||||||
|
formdata = formdef.data_class()()
|
||||||
|
formdata.just_created()
|
||||||
|
formdata.store()
|
||||||
|
|
||||||
|
app = login(get_app(pub))
|
||||||
|
resp = app.get('%sinspect' % formdata.get_url(backoffice=True), status=200)
|
||||||
|
assert 'form_option' not in resp.text
|
||||||
|
|
||||||
|
wf.variables_formdef.fields = [
|
||||||
|
fields.StringField(label='String test', varname='string_test'),
|
||||||
|
fields.DateField(label='Date test', varname='date_test'),
|
||||||
|
]
|
||||||
|
wf.store()
|
||||||
|
resp = app.get('%sinspect' % formdata.get_url(backoffice=True), status=200)
|
||||||
|
assert (
|
||||||
|
resp.pyquery('[title="form_option_string_test"]').parents('li').children('div.value span').text()
|
||||||
|
== 'None (no value)'
|
||||||
|
)
|
||||||
|
|
||||||
|
wf.variables_formdef.fields[0].default_value = 'xxx'
|
||||||
|
wf.variables_formdef.fields[1].default_value = '2024-03-20'
|
||||||
|
wf.store()
|
||||||
|
resp = app.get('%sinspect' % formdata.get_url(backoffice=True), status=200)
|
||||||
|
assert (
|
||||||
|
resp.pyquery('[title="form_option_string_test"]').parents('li').children('div.value span').text()
|
||||||
|
== 'xxx'
|
||||||
|
)
|
||||||
|
assert (
|
||||||
|
resp.pyquery('[title="form_option_date_test"]').parents('li').children('div.value span').text()
|
||||||
|
== '2024-03-20'
|
||||||
|
)
|
||||||
|
assert (
|
||||||
|
resp.pyquery('[title="form_option_date_test_year"]').parents('li').children('div.value span').text()
|
||||||
|
== '2024 (integer number)'
|
||||||
|
)
|
||||||
|
|
||||||
|
formdef.workflow_options = {'string_test': 'yyy', 'date_test': datetime.date(2024, 3, 21).timetuple()}
|
||||||
|
formdef.store()
|
||||||
|
resp = app.get('%sinspect' % formdata.get_url(backoffice=True), status=200)
|
||||||
|
assert (
|
||||||
|
resp.pyquery('[title="form_option_string_test"]').parents('li').children('div.value span').text()
|
||||||
|
== 'yyy'
|
||||||
|
)
|
||||||
|
assert (
|
||||||
|
resp.pyquery('[title="form_option_date_test"]').parents('li').children('div.value span').text()
|
||||||
|
== '2024-03-21'
|
||||||
|
)
|
||||||
|
assert (
|
||||||
|
resp.pyquery('[title="form_option_date_test_year"]').parents('li').children('div.value span').text()
|
||||||
|
== '2024 (integer number)'
|
||||||
|
)
|
||||||
|
|
|
@ -757,8 +757,6 @@ class LazyFormDef:
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def option(self):
|
def option(self):
|
||||||
if not self._formdef.workflow.variables_formdef:
|
|
||||||
return {}
|
|
||||||
return LazyFormDefOptions(self._formdef)
|
return LazyFormDefOptions(self._formdef)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
@ -1989,14 +1987,20 @@ class LazyRequest:
|
||||||
class LazyFormDefOptions(LazyFormDataVar):
|
class LazyFormDefOptions(LazyFormDataVar):
|
||||||
def __init__(self, formdef):
|
def __init__(self, formdef):
|
||||||
self._formdef = formdef
|
self._formdef = formdef
|
||||||
fields = self._formdef.workflow.variables_formdef.fields
|
try:
|
||||||
|
fields = self._formdef.workflow.variables_formdef.fields
|
||||||
|
except AttributeError:
|
||||||
|
fields = []
|
||||||
data = self._formdef.workflow_options or {}
|
data = self._formdef.workflow_options or {}
|
||||||
for field in fields:
|
for field in fields:
|
||||||
# change field IDs as options are stored in data with their
|
# change field IDs as options are stored in data with their
|
||||||
# varnames, not id.
|
# varnames, not id.
|
||||||
field.id = field.varname or field.id
|
field.id = field.varname or field.id
|
||||||
if hasattr(field, 'default_value') and data.get(field.varname) is None:
|
if hasattr(field, 'default_value') and data.get(field.varname) is None:
|
||||||
data[field.varname] = field.default_value
|
if isinstance(field.default_value, str):
|
||||||
|
data[field.varname] = field.convert_value_from_str(field.default_value)
|
||||||
|
else:
|
||||||
|
data[field.varname] = field.default_value
|
||||||
super().__init__(fields, data)
|
super().__init__(fields, data)
|
||||||
|
|
||||||
def inspect_keys(self):
|
def inspect_keys(self):
|
||||||
|
|
Loading…
Reference in New Issue