# HG changeset patch # User Sylvain Thénault # Date 1264520772 -3600 # Node ID 0c44af150a493c36590d2cc562ed6de3e432671c # Parent 0d337feb5374747d825ca3677e1c9c36f36c068e introduce a default render implementation on the base widget, which add_media and then call the newly introduced method _render(form, field, formrenderer), abstract of the base widget class. This allow a litle code factorisation and avoid to forget the call to add_media in subclasses. diff -r 0d337feb5374 -r 0c44af150a49 web/formwidgets.py --- a/web/formwidgets.py Tue Jan 26 16:43:51 2010 +0100 +++ b/web/formwidgets.py Tue Jan 26 16:46:12 2010 +0100 @@ -49,11 +49,13 @@ if self.needs_css: form._cw.add_css(self.needs_css) - def render(self, form, field, renderer): - """render the widget for the given `field` of `form`. - To override in concrete class - """ - raise NotImplementedError + + def render(self, form, field, renderer=None): + self.add_media(form) + return self._render(form, field, renderer) + + def _render(self, form, field, renderer): + raise NotImplementedError() def typed_value(self, form, field): """return field's *typed* value specified in: @@ -128,12 +130,11 @@ """abstract widget class for tag based widgets""" type = None - def render(self, form, field, renderer): + def _render(self, form, field, renderer): """render the widget for the given `field` of `form`. Generate one tag for each field's value """ - self.add_media(form) values, attrs = self.values_and_attributes(form, field) # ensure something is rendered if not values: @@ -157,8 +158,8 @@ """ type = 'password' - def render(self, form, field, renderer): - self.add_media(form) + def _render(self, form, field, renderer): + assert self.suffix is None, 'suffix not supported' values, attrs = self.values_and_attributes(form, field) assert len(values) == 1 id = attrs.pop('id') @@ -221,7 +222,7 @@ class TextArea(FieldWidget): """