web/views/formrenderers.py
changeset 2575 e033939d5664
parent 2574 37154aa90947
child 2577 7c9888114085
equal deleted inserted replaced
2574:37154aa90947 2575:e033939d5664
   304 
   304 
   305 class EntityCompositeFormRenderer(FormRenderer):
   305 class EntityCompositeFormRenderer(FormRenderer):
   306     """specific renderer for multiple entities edition form (muledit)"""
   306     """specific renderer for multiple entities edition form (muledit)"""
   307     id = 'composite'
   307     id = 'composite'
   308 
   308 
       
   309     _main_display_fields = None
       
   310 
   309     def render_fields(self, w, form, values):
   311     def render_fields(self, w, form, values):
   310         if not form.is_subform:
   312         if not form.is_subform:
   311             w(u'<table class="listing">')
   313             w(u'<table class="listing">')
   312         super(EntityCompositeFormRenderer, self).render_fields(w, form, values)
   314         super(EntityCompositeFormRenderer, self).render_fields(w, form, values)
   313         if not form.is_subform:
   315         if not form.is_subform:
   314             w(u'</table>')
   316             w(u'</table>')
       
   317             if self._main_display_fields:
       
   318                 super(EntityCompositeFormRenderer, self)._render_fields(
       
   319                     self._main_display_fields, w, form)
   315 
   320 
   316     def _render_fields(self, fields, w, form):
   321     def _render_fields(self, fields, w, form):
   317         if form.is_subform:
   322         if form.is_subform:
   318             entity = form.edited_entity
   323             entity = form.edited_entity
   319             values = form.form_previous_values
   324             values = form.form_previous_values
   332                 if isinstance(field.widget, (fwdgs.Select, fwdgs.CheckBox, fwdgs.Radio)):
   337                 if isinstance(field.widget, (fwdgs.Select, fwdgs.CheckBox, fwdgs.Radio)):
   333                     field.widget.attrs['onchange'] = cbsetstate
   338                     field.widget.attrs['onchange'] = cbsetstate
   334                 elif isinstance(field.widget, fwdgs.Input):
   339                 elif isinstance(field.widget, fwdgs.Input):
   335                     field.widget.attrs['onkeypress'] = cbsetstate
   340                     field.widget.attrs['onkeypress'] = cbsetstate
   336                 w(u'<div>%s</div>' % field.render(form, self))
   341                 w(u'<div>%s</div>' % field.render(form, self))
   337                 w(u'</td>')
   342                 w(u'</td></tr>')
   338         else:
   343         else:
   339             # main form, display table headers
   344             self._main_display_fields = fields
   340             w(u'<tr class="header">')
   345             subfields = [field for field in form.forms[0].fields
   341             w(u'<th align="left">%s</th>'
   346                          if self.display_field(form, field)
   342               % tags.input(type='checkbox', title=self.req._('toggle check boxes'),
   347                          and field.is_visible()]
   343                            onclick="setCheckboxesState('eid', this.checked)"))
   348             if subfields:
   344             for field in self.forms[0].fields:
   349                 # main form, display table headers
   345                 if self.display_field(form, field) and field.is_visible():
   350                 w(u'<tr class="header">')
       
   351                 w(u'<th align="left">%s</th>' %
       
   352                   tags.input(type='checkbox',
       
   353                              title=self.req._('toggle check boxes'),
       
   354                              onclick="setCheckboxesState('eid', this.checked)"))
       
   355                 for field in subfields:
   346                     w(u'<th>%s</th>' % self.req._(field.label))
   356                     w(u'<th>%s</th>' % self.req._(field.label))
   347         w(u'</tr>')
   357                 w(u'</tr>')
   348 
   358 
   349 
   359 
   350 class EntityFormRenderer(EntityBaseFormRenderer):
   360 class EntityFormRenderer(EntityBaseFormRenderer):
   351     """specific renderer for entity edition form (edition)"""
   361     """specific renderer for entity edition form (edition)"""
   352     id = 'default'
   362     id = 'default'