27 +--------------+--------------+ |
27 +--------------+--------------+ |
28 +---------+ |
28 +---------+ |
29 | buttons | |
29 | buttons | |
30 +---------+ |
30 +---------+ |
31 """ |
31 """ |
|
32 _options = ('display_fields', 'display_label', 'display_help', |
|
33 'display_progress_div', 'button_bar_class') |
32 display_fields = None # None -> all fields |
34 display_fields = None # None -> all fields |
33 display_label = True |
35 display_label = True |
34 display_help = True |
36 display_help = True |
35 display_progress_div = True |
37 display_progress_div = True |
36 button_bar_class = u'formButtonBar' |
38 button_bar_class = u'formButtonBar' |
38 def __init__(self, **kwargs): |
40 def __init__(self, **kwargs): |
39 if self._set_options(kwargs): |
41 if self._set_options(kwargs): |
40 raise ValueError('unconsumed arguments %s' % kwargs) |
42 raise ValueError('unconsumed arguments %s' % kwargs) |
41 |
43 |
42 def _set_options(self, kwargs): |
44 def _set_options(self, kwargs): |
43 for key in ('display_fields', 'display_label', 'display_help', |
45 for key in self._options: |
44 'display_progress_div', 'button_bar_class'): |
|
45 try: |
46 try: |
46 setattr(self, key, kwargs.pop(key)) |
47 setattr(self, key, kwargs.pop(key)) |
47 except KeyError: |
48 except KeyError: |
48 continue |
49 continue |
49 return kwargs |
50 return kwargs |
237 pass |
238 pass |
238 |
239 |
239 |
240 |
240 class EntityCompositeFormRenderer(FormRenderer): |
241 class EntityCompositeFormRenderer(FormRenderer): |
241 """specific renderer for multiple entities edition form (muledit)""" |
242 """specific renderer for multiple entities edition form (muledit)""" |
|
243 |
242 def render_fields(self, w, form, values): |
244 def render_fields(self, w, form, values): |
243 if not form.is_subform: |
245 if not form.is_subform: |
244 w(u'<table class="listing">') |
246 w(u'<table class="listing">') |
245 super(EntityCompositeFormRenderer, self).render_fields(w, form, values) |
247 super(EntityCompositeFormRenderer, self).render_fields(w, form, values) |
246 if not form.is_subform: |
248 if not form.is_subform: |
281 |
283 |
282 |
284 |
283 |
285 |
284 class EntityFormRenderer(FormRenderer): |
286 class EntityFormRenderer(FormRenderer): |
285 """specific renderer for entity edition form (edition)""" |
287 """specific renderer for entity edition form (edition)""" |
|
288 _options = FormRenderer._options + ('display_relations_form',) |
|
289 display_relations_form = True |
286 |
290 |
287 def render(self, form, values): |
291 def render(self, form, values): |
288 rendered = super(EntityFormRenderer, self).render(form, values) |
292 rendered = super(EntityFormRenderer, self).render(form, values) |
289 return rendered + u'</div>' # close extra div introducted by open_form |
293 return rendered + u'</div>' # close extra div introducted by open_form |
290 |
294 |
295 return attrs_fs_label + super(EntityFormRenderer, self).open_form(form, values) |
299 return attrs_fs_label + super(EntityFormRenderer, self).open_form(form, values) |
296 |
300 |
297 def render_fields(self, w, form, values): |
301 def render_fields(self, w, form, values): |
298 super(EntityFormRenderer, self).render_fields(w, form, values) |
302 super(EntityFormRenderer, self).render_fields(w, form, values) |
299 self.inline_entities_form(w, form) |
303 self.inline_entities_form(w, form) |
300 if form.edited_entity.has_eid(): |
304 if form.edited_entity.has_eid() and self.display_relations_table: |
301 self.relations_form(w, form) |
305 self.relations_form(w, form) |
302 |
306 |
303 def _render_fields(self, fields, w, form): |
307 def _render_fields(self, fields, w, form): |
304 if not form.edited_entity.has_eid() or form.edited_entity.has_perm('update'): |
308 if not form.edited_entity.has_eid() or form.edited_entity.has_perm('update'): |
305 super(EntityFormRenderer, self)._render_fields(fields, w, form) |
309 super(EntityFormRenderer, self)._render_fields(fields, w, form) |