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 False |
|
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/admin/fields.py | ||
---|---|---|
325 | 325 |
self.objectdef.store() |
326 | 326 |
return 'ok' |
327 | 327 | |
328 |
def get_new_field(self, form): |
|
329 |
return fields.get_field_class_by_type(form.get_widget('type').parse())( |
|
330 |
label=form.get_widget('label').parse(), |
|
331 |
type=form.get_widget('type').parse(), |
|
332 |
id=self.objectdef.get_new_field_id()) |
|
333 | ||
328 | 334 |
def new(self): |
329 | 335 |
form = Form(enctype='multipart/form-data', action = 'new') |
330 | 336 |
form.add(StringWidget, 'page_no') |
... | ... | |
361 | 367 |
insertion_point = len(self.objectdef.fields) |
362 | 368 | |
363 | 369 |
if form.get_widget('label').parse() and form.get_widget('type').parse(): |
364 |
self.objectdef.fields.insert(insertion_point, |
|
365 |
fields.get_field_class_by_type(form.get_widget('type').parse())( |
|
366 |
label = form.get_widget('label').parse(), |
|
367 |
type = form.get_widget('type').parse(), |
|
368 |
id =self.objectdef.get_new_field_id())) |
|
370 |
new_field = self.get_new_field(form) |
|
371 |
self.objectdef.fields.insert(insertion_point, new_field) |
|
369 | 372 |
elif form.get_widget('form') and form.get_widget('form').parse(): |
370 | 373 |
formdef = FormDef.get(form.get_widget('form').parse()) |
371 | 374 |
for j, field in enumerate(formdef.fields): |
wcs/admin/workflows.py | ||
---|---|---|
877 | 877 |
def index_bottom(self): |
878 | 878 |
pass |
879 | 879 | |
880 |
def get_new_field(self, form): |
|
881 |
new_field = super(WorkflowBackofficeFieldsDirectory, self).get_new_field(form) |
|
882 |
new_field.required = False |
|
883 |
return new_field |
|
884 | ||
880 | 885 | |
881 | 886 |
class VariablesDirectory(Directory): |
882 | 887 |
_q_exports = ['', 'fields'] |
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 |
- |