web/views/formrenderers.py
branchstable
changeset 4313 5d8196a105a7
parent 4212 ab6573088b4a
child 4314 e12ee4a009bc
equal deleted inserted replaced
4299:96d347c3247e 4313:5d8196a105a7
    17 from cubicweb.selectors import entity_implements, yes
    17 from cubicweb.selectors import entity_implements, yes
    18 from cubicweb.web import eid_param
    18 from cubicweb.web import eid_param
    19 from cubicweb.web import formwidgets as fwdgs
    19 from cubicweb.web import formwidgets as fwdgs
    20 from cubicweb.web.widgets import checkbox
    20 from cubicweb.web.widgets import checkbox
    21 from cubicweb.web.formfields import HiddenInitialValueField
    21 from cubicweb.web.formfields import HiddenInitialValueField
       
    22 
       
    23 def field_label(form, field):
       
    24     # XXX with 3.6 we can now properly rely on 'if field.role is not None' and
       
    25     # stop having a tuple for label
       
    26     if isinstance(field.label, tuple): # i.e. needs contextual translation
       
    27         return form.req.pgettext(*field.label)
       
    28     return form.req._(field.label)
       
    29 
    22 
    30 
    23 
    31 
    24 class FormRenderer(AppObject):
    32 class FormRenderer(AppObject):
    25     """basic renderer displaying fields in a two columns table label | value
    33     """basic renderer displaying fields in a two columns table label | value
    26 
    34 
    85         return '\n'.join(data)
    93         return '\n'.join(data)
    86 
    94 
    87     def render_label(self, form, field):
    95     def render_label(self, form, field):
    88         if field.label is None:
    96         if field.label is None:
    89             return u''
    97             return u''
    90         if isinstance(field.label, tuple): # i.e. needs contextual translation
    98         label = field_label(form, field)
    91             label = self.req.pgettext(*field.label)
       
    92         else:
       
    93             label = self.req._(field.label)
       
    94         attrs = {'for': form.context[field]['id']}
    99         attrs = {'for': form.context[field]['id']}
    95         if field.required:
   100         if field.required:
    96             attrs['class'] = 'required'
   101             attrs['class'] = 'required'
    97         return tags.label(label, **attrs)
   102         return tags.label(label, **attrs)
    98 
   103 
   322                 w(u'<th align="left">%s</th>' %
   327                 w(u'<th align="left">%s</th>' %
   323                   tags.input(type='checkbox',
   328                   tags.input(type='checkbox',
   324                              title=self.req._('toggle check boxes'),
   329                              title=self.req._('toggle check boxes'),
   325                              onclick="setCheckboxesState('eid', this.checked)"))
   330                              onclick="setCheckboxesState('eid', this.checked)"))
   326                 for field in subfields:
   331                 for field in subfields:
   327                     w(u'<th>%s</th>' % self.req._(field.label))
   332                     w(u'<th>%s</th>' % field_label(form, field))
   328                 w(u'</tr>')
   333                 w(u'</tr>')
   329         super(EntityCompositeFormRenderer, self).render_fields(w, form, values)
   334         super(EntityCompositeFormRenderer, self).render_fields(w, form, values)
   330         if form.parent_form is None:
   335         if form.parent_form is None:
   331             w(u'</table>')
   336             w(u'</table>')
   332             if self._main_display_fields:
   337             if self._main_display_fields: