backoffice: always display backoffice fields marked as required (#11441)
This commit is contained in:
parent
c1a46ac67d
commit
7f4492df49
|
@ -1676,6 +1676,7 @@ def test_workflows_backoffice_fields(pub):
|
|||
resp = resp.forms[0].submit()
|
||||
assert resp.location == 'http://example.net/backoffice/workflows/1/backoffice-fields/fields/'
|
||||
resp = resp.follow()
|
||||
assert Workflow.get(workflow.id).get_backoffice_fields()[0].required is True
|
||||
|
||||
# check it's been saved correctly
|
||||
assert 'foobar' in resp.body
|
||||
|
|
|
@ -2447,7 +2447,7 @@ def test_backoffice_fields(pub):
|
|||
wf.backoffice_fields_formdef = WorkflowBackofficeFieldsFormDef(wf)
|
||||
wf.backoffice_fields_formdef.fields = [
|
||||
fields.StringField(id='bo1', label='1st backoffice field',
|
||||
type='string', varname='backoffice_blah'),
|
||||
type='string', varname='backoffice_blah', required=False),
|
||||
]
|
||||
st1 = wf.add_status('Status1')
|
||||
wf.store()
|
||||
|
@ -2472,3 +2472,19 @@ def test_backoffice_fields(pub):
|
|||
assert 'Backoffice Data' in resp.body
|
||||
assert '1st backoffice field' in resp.body
|
||||
assert 'HELLO WORLD' in resp.body
|
||||
|
||||
wf.backoffice_fields_formdef.fields = [
|
||||
fields.StringField(id='bo1', label='1st backoffice field',
|
||||
type='string', varname='backoffice_blah', required=True),
|
||||
]
|
||||
wf.store()
|
||||
|
||||
formdata = formdef.data_class()()
|
||||
formdata.data = {}
|
||||
formdata.just_created()
|
||||
formdata.store()
|
||||
|
||||
app = login(get_app(pub))
|
||||
resp = app.get(formdata.get_url(backoffice=True))
|
||||
assert 'Backoffice Data' in resp.body
|
||||
assert 'Not set' in resp.body
|
||||
|
|
|
@ -434,7 +434,7 @@ class FormStatusPage(Directory):
|
|||
|
||||
return r.getvalue()
|
||||
|
||||
def display_fields(self, fields, form_url=''):
|
||||
def display_fields(self, fields, form_url='', include_unset_required_fields=False):
|
||||
r = TemplateIO(html=True)
|
||||
on_page = False
|
||||
on_disabled_page = False
|
||||
|
@ -468,33 +468,39 @@ class FormStatusPage(Directory):
|
|||
on_page = True
|
||||
continue
|
||||
|
||||
if not self.filled.data.has_key(f.id):
|
||||
continue
|
||||
|
||||
if f.store_display_value and ('%s_display' % f.id) in self.filled.data:
|
||||
value = self.filled.data['%s_display' % f.id]
|
||||
else:
|
||||
value = self.filled.data[f.id]
|
||||
|
||||
if value is None or value == '':
|
||||
continue
|
||||
|
||||
if not hasattr(f, str('get_view_value')):
|
||||
continue
|
||||
|
||||
if not self.filled.data.has_key(f.id):
|
||||
value = None
|
||||
else:
|
||||
if f.store_display_value and ('%s_display' % f.id) in self.filled.data:
|
||||
value = self.filled.data['%s_display' % f.id]
|
||||
else:
|
||||
value = self.filled.data[f.id]
|
||||
|
||||
if value is None or value == '':
|
||||
value = None
|
||||
|
||||
if value is None and not (f.required and include_unset_required_fields):
|
||||
continue
|
||||
|
||||
css_classes = ['field']
|
||||
if f.extra_css_class:
|
||||
css_classes.append(f.extra_css_class)
|
||||
r += htmltext('<div class="%s">' % ' '.join(css_classes))
|
||||
r += htmltext('<span class="label">%s</span> ') % f.label
|
||||
if isinstance(f, FileField):
|
||||
r += htmltext(self.display_file_field(form_url, f, value))
|
||||
else: # normal display
|
||||
r += htmltext('<div class="value">')
|
||||
s = f.get_view_value(value)
|
||||
s = s.replace(str('[download]'), str('%sdownload' % form_url))
|
||||
r += s
|
||||
r += htmltext('</div>')
|
||||
if value is None:
|
||||
r += htmltext('<div class="value"><i>%s</i></div>') % _('Not set')
|
||||
else:
|
||||
if isinstance(f, FileField):
|
||||
r += htmltext(self.display_file_field(form_url, f, value))
|
||||
else: # normal display
|
||||
r += htmltext('<div class="value">')
|
||||
s = f.get_view_value(value)
|
||||
s = s.replace(str('[download]'), str('%sdownload' % form_url))
|
||||
r += s
|
||||
r += htmltext('</div>')
|
||||
r += htmltext('</div>')
|
||||
|
||||
if on_page:
|
||||
|
@ -506,7 +512,8 @@ class FormStatusPage(Directory):
|
|||
backoffice_fields = self.formdef.workflow.get_backoffice_fields()
|
||||
if not backoffice_fields:
|
||||
return
|
||||
content = self.display_fields(backoffice_fields)
|
||||
content = self.display_fields(backoffice_fields,
|
||||
include_unset_required_fields=True)
|
||||
if not len(content):
|
||||
return
|
||||
r = TemplateIO(html=True)
|
||||
|
|
Loading…
Reference in New Issue