web/views/formrenderers.py
changeset 6082 57933567146f
parent 5940 0e3ae19b181a
child 6366 1806148d6ce8
equal deleted inserted replaced
6081:ede33e6400ab 6082:57933567146f
    39 from logilab.mtconverter import xml_escape
    39 from logilab.mtconverter import xml_escape
    40 
    40 
    41 from cubicweb import tags
    41 from cubicweb import tags
    42 from cubicweb.appobject import AppObject
    42 from cubicweb.appobject import AppObject
    43 from cubicweb.selectors import is_instance, yes
    43 from cubicweb.selectors import is_instance, yes
    44 from cubicweb.utils import json_dumps
    44 from cubicweb.utils import json_dumps, support_args
    45 from cubicweb.web import eid_param, formwidgets as fwdgs
    45 from cubicweb.web import eid_param, formwidgets as fwdgs
    46 
    46 
    47 
    47 
    48 def checkbox(name, value, attrs='', checked=None):
    48 def checkbox(name, value, attrs='', checked=None):
    49     if checked is None:
    49     if checked is None:
    51     checked = checked and 'checked="checked"' or ''
    51     checked = checked and 'checked="checked"' or ''
    52     return u'<input type="checkbox" name="%s" value="%s" %s %s />' % (
    52     return u'<input type="checkbox" name="%s" value="%s" %s %s />' % (
    53         name, value, checked, attrs)
    53         name, value, checked, attrs)
    54 
    54 
    55 def field_label(form, field):
    55 def field_label(form, field):
       
    56     if callable(field.label):
       
    57         return field.label(form, field)
    56     # XXX with 3.6 we can now properly rely on 'if field.role is not None' and
    58     # XXX with 3.6 we can now properly rely on 'if field.role is not None' and
    57     # stop having a tuple for label
    59     # stop having a tuple for label
    58     if isinstance(field.label, tuple): # i.e. needs contextual translation
    60     if isinstance(field.label, tuple): # i.e. needs contextual translation
    59         return form._cw.pgettext(*field.label)
    61         return form._cw.pgettext(*field.label)
    60     return form._cw._(field.label)
    62     return form._cw._(field.label)
   131 
   133 
   132     def render_help(self, form, field):
   134     def render_help(self, form, field):
   133         help = []
   135         help = []
   134         descr = field.help
   136         descr = field.help
   135         if callable(descr):
   137         if callable(descr):
   136             descr = descr(form)
   138             if support_args(descr, 'form', 'field'):
       
   139                 descr = descr(form, field)
       
   140             else:
       
   141                 warn("[3.10] field's help callback must now take form and field as argument",
       
   142                      DeprecationWarning)
       
   143                 descr = descr(form)
   137         if descr:
   144         if descr:
   138             help.append('<div class="helper">%s</div>' % self._cw._(descr))
   145             help.append('<div class="helper">%s</div>' % self._cw._(descr))
   139         example = field.example_format(self._cw)
   146         example = field.example_format(self._cw)
   140         if example:
   147         if example:
   141             help.append('<div class="helper">(%s: %s)</div>'
   148             help.append('<div class="helper">(%s: %s)</div>'