0001-backoffice-always-display-backoffice-fields-marked-a.patch
tests/test_admin_pages.py | ||
---|---|---|
1649 | 1649 |
resp = resp.forms[0].submit() |
1650 | 1650 |
assert resp.location == 'http://example.net/backoffice/workflows/1/backoffice-fields/fields/' |
1651 | 1651 |
resp = resp.follow() |
1652 |
assert Workflow.get(workflow.id).get_backoffice_fields()[0].required is True |
|
1652 | 1653 | |
1653 | 1654 |
# check it's been saved correctly |
1654 | 1655 |
assert 'foobar' in resp.body |
tests/test_backoffice_pages.py | ||
---|---|---|
2496 | 2496 |
wf.backoffice_fields_formdef = WorkflowBackofficeFieldsFormDef(wf) |
2497 | 2497 |
wf.backoffice_fields_formdef.fields = [ |
2498 | 2498 |
fields.StringField(id='bo1', label='1st backoffice field', |
2499 |
type='string', varname='backoffice_blah'), |
|
2499 |
type='string', varname='backoffice_blah', required=False),
|
|
2500 | 2500 |
] |
2501 | 2501 |
st1 = wf.add_status('Status1') |
2502 | 2502 |
wf.store() |
... | ... | |
2521 | 2521 |
assert 'Backoffice Data' in resp.body |
2522 | 2522 |
assert '1st backoffice field' in resp.body |
2523 | 2523 |
assert 'HELLO WORLD' in resp.body |
2524 | ||
2525 |
wf.backoffice_fields_formdef.fields = [ |
|
2526 |
fields.StringField(id='bo1', label='1st backoffice field', |
|
2527 |
type='string', varname='backoffice_blah', required=True), |
|
2528 |
] |
|
2529 |
wf.store() |
|
2530 | ||
2531 |
formdata = formdef.data_class()() |
|
2532 |
formdata.data = {} |
|
2533 |
formdata.just_created() |
|
2534 |
formdata.store() |
|
2535 | ||
2536 |
app = login(get_app(pub)) |
|
2537 |
resp = app.get(formdata.get_url(backoffice=True)) |
|
2538 |
assert 'Backoffice Data' in resp.body |
|
2539 |
assert 'Not set' in resp.body |
wcs/forms/common.py | ||
---|---|---|
434 | 434 | |
435 | 435 |
return r.getvalue() |
436 | 436 | |
437 |
def display_fields(self, fields, form_url=''): |
|
437 |
def display_fields(self, fields, form_url='', include_unset_required_fields=False):
|
|
438 | 438 |
r = TemplateIO(html=True) |
439 | 439 |
on_page = False |
440 | 440 |
on_disabled_page = False |
... | ... | |
468 | 468 |
on_page = True |
469 | 469 |
continue |
470 | 470 | |
471 |
if not self.filled.data.has_key(f.id):
|
|
471 |
if not hasattr(f, str('get_view_value')):
|
|
472 | 472 |
continue |
473 | 473 | |
474 |
if f.store_display_value and ('%s_display' % f.id) in self.filled.data:
|
|
475 |
value = self.filled.data['%s_display' % f.id]
|
|
474 |
if not self.filled.data.has_key(f.id):
|
|
475 |
value = None
|
|
476 | 476 |
else: |
477 |
value = self.filled.data[f.id] |
|
477 |
if f.store_display_value and ('%s_display' % f.id) in self.filled.data: |
|
478 |
value = self.filled.data['%s_display' % f.id] |
|
479 |
else: |
|
480 |
value = self.filled.data[f.id] |
|
478 | 481 | |
479 |
if value is None or value == '': |
|
480 |
continue
|
|
482 |
if value is None or value == '':
|
|
483 |
value = None
|
|
481 | 484 | |
482 |
if not hasattr(f, str('get_view_value')):
|
|
485 |
if value is None and not (f.required and include_unset_required_fields):
|
|
483 | 486 |
continue |
484 | 487 | |
485 | 488 |
css_classes = ['field'] |
... | ... | |
487 | 490 |
css_classes.append(f.extra_css_class) |
488 | 491 |
r += htmltext('<div class="%s">' % ' '.join(css_classes)) |
489 | 492 |
r += htmltext('<span class="label">%s</span> ') % f.label |
490 |
if isinstance(f, FileField): |
|
491 |
r += htmltext(self.display_file_field(form_url, f, value)) |
|
492 |
else: # normal display |
|
493 |
r += htmltext('<div class="value">') |
|
494 |
s = f.get_view_value(value) |
|
495 |
s = s.replace(str('[download]'), str('%sdownload' % form_url)) |
|
496 |
r += s |
|
497 |
r += htmltext('</div>') |
|
493 |
if value is None: |
|
494 |
r += htmltext('<div class="value"><i>%s</i></div>') % _('Not set') |
|
495 |
else: |
|
496 |
if isinstance(f, FileField): |
|
497 |
r += htmltext(self.display_file_field(form_url, f, value)) |
|
498 |
else: # normal display |
|
499 |
r += htmltext('<div class="value">') |
|
500 |
s = f.get_view_value(value) |
|
501 |
s = s.replace(str('[download]'), str('%sdownload' % form_url)) |
|
502 |
r += s |
|
503 |
r += htmltext('</div>') |
|
498 | 504 |
r += htmltext('</div>') |
499 | 505 | |
500 | 506 |
if on_page: |
... | ... | |
506 | 512 |
backoffice_fields = self.formdef.workflow.get_backoffice_fields() |
507 | 513 |
if not backoffice_fields: |
508 | 514 |
return |
509 |
content = self.display_fields(backoffice_fields) |
|
515 |
content = self.display_fields(backoffice_fields, |
|
516 |
include_unset_required_fields=True) |
|
510 | 517 |
if not len(content): |
511 | 518 |
return |
512 | 519 |
r = TemplateIO(html=True) |
513 |
- |