18 |
18 |
19 |
19 |
20 class FormRenderer(object): |
20 class FormRenderer(object): |
21 """basic renderer displaying fields in a two columns table label | value |
21 """basic renderer displaying fields in a two columns table label | value |
22 """ |
22 """ |
|
23 display_fields = None # None -> all fields |
|
24 display_label = True |
|
25 display_help = True |
|
26 display_progress_div = True |
23 button_bar_class = u'formButtonBar' |
27 button_bar_class = u'formButtonBar' |
24 |
28 |
25 def __init__(self, display_fields=None, display_label=True, |
29 def __init__(self, **kwargs): |
26 display_help=True, button_bar_class=None): |
30 if self._set_options(kwargs): |
27 self.display_fields = display_fields # None -> all fields |
31 raise ValueError('unconsumed arguments %s' % kwargs) |
28 self.display_label = display_label |
32 |
29 self.display_help = display_help |
33 def _set_options(self, kwargs): |
30 if button_bar_class is not None: |
34 for key in ('display_fields', 'display_label', 'display_help', |
31 self.button_bar_class = button_bar_class |
35 'display_progress_div', 'button_bar_class'): |
32 |
36 try: |
|
37 setattr(self, key, kwargs.pop(key)) |
|
38 except KeyError: |
|
39 continue |
|
40 return kwargs |
|
41 |
33 # renderer interface ###################################################### |
42 # renderer interface ###################################################### |
34 |
43 |
35 def render(self, form, values): |
44 def render(self, form, values): |
|
45 self._set_options(values) |
36 form.add_media() |
46 form.add_media() |
37 data = [] |
47 data = [] |
38 w = data.append |
48 w = data.append |
39 w(self.open_form(form, values)) |
49 w(self.open_form(form, values)) |
40 w(u'<div id="progress">%s</div>' % form.req._('validating...')) |
50 if self.display_progress_div: |
|
51 w(u'<div id="progress">%s</div>' % form.req._('validating...')) |
41 w(u'<fieldset>') |
52 w(u'<fieldset>') |
42 w(tags.input(type=u'hidden', name=u'__form_id', |
53 w(tags.input(type=u'hidden', name=u'__form_id', |
43 value=values.get('formvid', form.id))) |
54 value=values.get('formvid', form.id))) |
44 if form.redirect_path: |
55 if form.redirect_path: |
45 w(tags.input(type='hidden', name='__redirectpath', value=form.redirect_path)) |
56 w(tags.input(type='hidden', name='__redirectpath', value=form.redirect_path)) |