web/formfields.py
changeset 2522 562f5dcf2345
parent 2520 8c5cf48ae9ea
child 2523 1d245fbbeb90
equal deleted inserted replaced
2521:782360fa6cc0 2522:562f5dcf2345
   159 
   159 
   160     def render(self, form, renderer):
   160     def render(self, form, renderer):
   161         """render this field, which is part of form, using the given form
   161         """render this field, which is part of form, using the given form
   162         renderer
   162         renderer
   163         """
   163         """
   164         return self.get_widget(form).render(form, self)
   164         widget = self.get_widget(form)
       
   165         try:
       
   166             return widget.render(form, self, renderer)
       
   167         except TypeError:
       
   168             warn('widget.render now take the renderer as third argument, please update %s implementation'
       
   169                  % widget.__class__.__name__, DeprecationWarning)
       
   170             return widget.render(form, self)
   165 
   171 
   166     def vocabulary(self, form):
   172     def vocabulary(self, form):
   167         """return vocabulary for this field. This method will be called by
   173         """return vocabulary for this field. This method will be called by
   168         widgets which desire it."""
   174         widgets which desire it."""
   169         if self.choices is not None:
   175         if self.choices is not None:
   288             # XXX we want both fields to remain vertically aligned
   294             # XXX we want both fields to remain vertically aligned
   289             format_field.widget.attrs['style'] = 'display: block'
   295             format_field.widget.attrs['style'] = 'display: block'
   290             result = format_field.render(form, renderer)
   296             result = format_field.render(form, renderer)
   291         else:
   297         else:
   292             result = u''
   298             result = u''
   293         return result + self.get_widget(form).render(form, self)
   299         return result + self.get_widget(form).render(form, self, renderer)
   294 
   300 
   295 
   301 
   296 class FileField(StringField):
   302 class FileField(StringField):
   297     widget = FileInput
   303     widget = FileInput
   298     needs_multipart = True
   304     needs_multipart = True
   308             yield self.format_field
   314             yield self.format_field
   309         if self.encoding_field:
   315         if self.encoding_field:
   310             yield self.encoding_field
   316             yield self.encoding_field
   311 
   317 
   312     def render(self, form, renderer):
   318     def render(self, form, renderer):
   313         wdgs = [self.get_widget(form).render(form, self)]
   319         wdgs = [self.get_widget(form).render(form, self, renderer)]
   314         if self.format_field or self.encoding_field:
   320         if self.format_field or self.encoding_field:
   315             divid = '%s-advanced' % form.context[self]['name']
   321             divid = '%s-advanced' % form.context[self]['name']
   316             wdgs.append(u'<a href="%s" title="%s"><img src="%s" alt="%s"/></a>' %
   322             wdgs.append(u'<a href="%s" title="%s"><img src="%s" alt="%s"/></a>' %
   317                         (xml_escape(uilib.toggle_action(divid)),
   323                         (xml_escape(uilib.toggle_action(divid)),
   318                          form.req._('show advanced fields'),
   324                          form.req._('show advanced fields'),
   362                     else:
   368                     else:
   363                         msg = form.req._(
   369                         msg = form.req._(
   364                             'You can either submit a new file using the browse button above'
   370                             'You can either submit a new file using the browse button above'
   365                             ', or edit file content online with the widget below.')
   371                             ', or edit file content online with the widget below.')
   366                     wdgs.append(u'<p><b>%s</b></p>' % msg)
   372                     wdgs.append(u'<p><b>%s</b></p>' % msg)
   367                     wdgs.append(TextArea(setdomid=False).render(form, self))
   373                     wdgs.append(TextArea(setdomid=False).render(form, self, renderer))
   368                     # XXX restore form context?
   374                     # XXX restore form context?
   369         return '\n'.join(wdgs)
   375         return '\n'.join(wdgs)
   370 
   376 
   371 
   377 
   372 class IntField(Field):
   378 class IntField(Field):