[Checkins] SVN: z3c.form/branches/adamg-objectwidget/src/z3c/form/ made setErrors go recursive over forms and widgets
Brian Sutherland
brian at vanguardistas.net
Mon Dec 22 07:28:59 EST 2008
Apologies if this has come up before, but this change breaks backwards
compatibility for and existing widget I have (error described below).
Was the change to IWidget discussed anywhere?
On Tue, Oct 14, 2008 at 12:30:08PM -0400, Adam Groszer wrote:
> Log message for revision 92198:
> made setErrors go recursive over forms and widgets
>
>
> Changed:
> U z3c.form/branches/adamg-objectwidget/src/z3c/form/browser/image.py
> U z3c.form/branches/adamg-objectwidget/src/z3c/form/browser/object.txt
> U z3c.form/branches/adamg-objectwidget/src/z3c/form/field.py
> U z3c.form/branches/adamg-objectwidget/src/z3c/form/form.py
> U z3c.form/branches/adamg-objectwidget/src/z3c/form/interfaces.py
> U z3c.form/branches/adamg-objectwidget/src/z3c/form/object.py
> U z3c.form/branches/adamg-objectwidget/src/z3c/form/widget.py
>
> -=-
<snip>
> Modified:
> z3c.form/branches/adamg-objectwidget/src/z3c/form/interfaces.py
> ===================================================================
> --- z3c.form/branches/adamg-objectwidget/src/z3c/form/interfaces.py
> 2008-10-14 15:22:29 UTC (rev 92197)
> +++ z3c.form/branches/adamg-objectwidget/src/z3c/form/interfaces.py
> 2008-10-14 16:30:08 UTC (rev 92198)
> @@ -404,7 +404,7 @@
> default=False,
> required=False)
>
> - def extract(default=NOVALUE):
> + def extract(default=NOVALUE, setErrors=True):
> """Extract the string value(s) of the widget from the form.
>
> The return value may be any Python construct, but is
> typically a
> @@ -414,10 +414,12 @@
>
> If an error occurs during the extraction, the default value
> should be
> returned. Since this should never happen, if the widget is
> properly
> - designed and used, it is okay to not raise an error here,
> since we do
> + designed and used, it is okay to NOT raise an error here,
> since we do
> not want to crash the system during an inproper request.
>
> If there is no value to extract, the default is to be
> returned.
> +
> + setErrors: needs to be passed on to possible sub-widgets
> """
>
> def update():
> @@ -582,8 +584,11 @@
> def update():
> """Setup widgets."""
>
> - def extract():
> + def extract(setErrors=True):
> """Extract the values from the widgets and validate them.
> +
> + setErrors: decides whether to set errors on self and on the
> widgets
> + also needs to be passed on to sub-widgets
> """
>
>
> @@ -843,9 +848,11 @@
> mainly meant to be a hook for subclasses.
> '''
>
> - def extractData():
> - '''Extract the data of the form.'''
> + def extractData(setErrors=True):
> + '''Extract the data of the form.
>
> + setErrors: needs to be passed to extract() and to
> sub-widgets'''
> +
> def update():
> '''Update the form.'''
>
>
<snip>
> Modified: z3c.form/branches/adamg-objectwidget/src/z3c/form/widget.py
> ===================================================================
> --- z3c.form/branches/adamg-objectwidget/src/z3c/form/widget.py 2008-10-14 15:22:29 UTC (rev 92197)
> +++ z3c.form/branches/adamg-objectwidget/src/z3c/form/widget.py 2008-10-14 16:30:08 UTC (rev 92198)
> @@ -77,7 +77,9 @@
> lookForDefault = False
> # Step 1.1: If possible, get a value from the request
> if not self.ignoreRequest:
> - widget_value = self.extract()
> + #at this turn we do not need errors to be set on widgets
> + #errors will be set when extract gets called from form.extractData
> + widget_value = self.extract(setErrors=False)
This raises:
TypeError: extract() got an unexpected keyword argument 'setErrors'
For an existing widget that implements the extract method.
> if widget_value is not interfaces.NOVALUE:
> # Once we found the value in the request, it takes precendence
> # over everything and nothing else has to be done.
> @@ -136,7 +138,7 @@
> IPageTemplate, name=self.mode)
> return template(self)
>
> - def extract(self, default=interfaces.NOVALUE):
> + def extract(self, default=interfaces.NOVALUE, setErrors=True):
> """See z3c.form.interfaces.IWidget."""
> return self.request.get(self.name, default)
>
> @@ -195,7 +197,7 @@
> self.updateTerms()
> super(SequenceWidget, self).update()
>
> - def extract(self, default=interfaces.NOVALUE):
> + def extract(self, default=interfaces.NOVALUE, setErrors=True):
> """See z3c.form.interfaces.IWidget."""
> if (self.name not in self.request and
> self.name+'-empty-marker' in self.request):
> @@ -338,7 +340,7 @@
> self.updateWidgets()
> return property(get, set)
>
> - def extract(self, default=interfaces.NOVALUE):
> + def extract(self, default=interfaces.NOVALUE, setErrors=True):
> # This method is responsible to get the widgets value based on the
> # request and nothing else.
> # We have to setup the widgets for extract their values, because we
>
> _______________________________________________
> Checkins mailing list
> Checkins at zope.org
> http://mail.zope.org/mailman/listinfo/checkins
--
Brian Sutherland
More information about the Checkins
mailing list