[Checkins] SVN: z3c.form/branches/adamg-objectwidget/src/z3c/form/ made setErrors go recursive over forms and widgets
Adam GROSZER
agroszer at gmail.com
Sun Jan 4 12:01:02 EST 2009
Hello Brian,
I hope I solved it... please check...
Monday, December 22, 2008, 1:28:59 PM, you wrote:
BS> Apologies if this has come up before, but this change breaks backwards
BS> compatibility for and existing widget I have (error described below).
BS> Was the change to IWidget discussed anywhere?
BS> 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
>>
>> -=-
BS> <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.'''
>>
>>
BS> <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)
BS> This raises:
BS> TypeError: extract() got an unexpected keyword argument 'setErrors'
BS> 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
--
Best regards,
Adam GROSZER mailto:agroszer at gmail.com
--
Quote of the day:
Some people think it's holding on that makes one strong. Sometimes it's letting go.
- Sylvia Robinson
More information about the Checkins
mailing list