# HG changeset patch # User Sylvain Thénault # Date 1248712969 -7200 # Node ID 562f5dcf234581121a004b2818ea2803494e99f2 # Parent 782360fa6cc0420e25032e209cb21f4ecba2897a widget.render now takes the renderer as third argument (keeping minimal bw compat) diff -r 782360fa6cc0 -r 562f5dcf2345 web/formfields.py --- a/web/formfields.py Mon Jul 27 18:41:44 2009 +0200 +++ b/web/formfields.py Mon Jul 27 18:42:49 2009 +0200 @@ -161,7 +161,13 @@ """render this field, which is part of form, using the given form renderer """ - return self.get_widget(form).render(form, self) + widget = self.get_widget(form) + try: + return widget.render(form, self, renderer) + except TypeError: + warn('widget.render now take the renderer as third argument, please update %s implementation' + % widget.__class__.__name__, DeprecationWarning) + return widget.render(form, self) def vocabulary(self, form): """return vocabulary for this field. This method will be called by @@ -290,7 +296,7 @@ result = format_field.render(form, renderer) else: result = u'' - return result + self.get_widget(form).render(form, self) + return result + self.get_widget(form).render(form, self, renderer) class FileField(StringField): @@ -310,7 +316,7 @@ yield self.encoding_field def render(self, form, renderer): - wdgs = [self.get_widget(form).render(form, self)] + wdgs = [self.get_widget(form).render(form, self, renderer)] if self.format_field or self.encoding_field: divid = '%s-advanced' % form.context[self]['name'] wdgs.append(u'%s' % @@ -364,7 +370,7 @@ 'You can either submit a new file using the browse button above' ', or edit file content online with the widget below.') wdgs.append(u'

%s

' % msg) - wdgs.append(TextArea(setdomid=False).render(form, self)) + wdgs.append(TextArea(setdomid=False).render(form, self, renderer)) # XXX restore form context? return '\n'.join(wdgs) diff -r 782360fa6cc0 -r 562f5dcf2345 web/formwidgets.py --- a/web/formwidgets.py Mon Jul 27 18:41:44 2009 +0200 +++ b/web/formwidgets.py Mon Jul 27 18:42:49 2009 +0200 @@ -43,7 +43,7 @@ if self.needs_css: form.req.add_css(self.needs_css) - def render(self, form, field): + def render(self, form, field, renderer): """render the widget for the given `field` of `form`. To override in concrete class """ @@ -68,7 +68,7 @@ """abstract widget class for tag based widgets""" type = None - def render(self, form, field): + def render(self, form, field, renderer): """render the widget for the given `field` of `form`. Generate one tag for each field's value @@ -96,7 +96,7 @@ """ type = 'password' - def render(self, form, field): + def render(self, form, field, renderer): self.add_media(form) name, values, attrs = self._render_attrs(form, field) assert len(values) == 1 @@ -105,9 +105,11 @@ confirmname = '%s-confirm:%s' % tuple(name.rsplit(':', 1)) except TypeError: confirmname = '%s-confirm' % name - inputs = [tags.input(name=name, value=values[0], type=self.type, id=id, **attrs), + inputs = [tags.input(name=name, value=values[0], type=self.type, id=id, + **attrs), '
', - tags.input(name=confirmname, value=values[0], type=self.type, **attrs), + tags.input(name=confirmname, value=values[0], type=self.type, + **attrs), ' ', tags.span(form.req._('confirm password'), **{'class': 'emphasis'})] return u'\n'.join(inputs) @@ -147,7 +149,7 @@ class TextArea(FieldWidget): """