[Checkins] SVN: z3c.form/trunk/ Initialize the field widget manager

Malthe Borch mborch at gmail.com
Tue Oct 30 09:36:13 UTC 2012


I have applied your suggestion and committed this again, along with an
updated test and interface documentation.

\malthe

On 17 September 2012 15:27, Adam GROSZER <agroszer at gmail.com> wrote:
> Hello,
>
> I'd do:
>
> Index: src/z3c/form/form.py
> ===================================================================
> --- src/z3c/form/form.py        (revision 127851)
> +++ src/z3c/form/form.py        (working copy)
> @@ -121,10 +121,12 @@
>          '''See interfaces.IForm'''
>          return self.context
>
> -    def updateWidgets(self):
> +    def updateWidgets(self, prefix=None):
>          '''See interfaces.IForm'''
>          self.widgets = zope.component.getMultiAdapter(
>              (self, self.request, self.getContent()), interfaces.IWidgets)
> +        if prefix is not None:
> +            self.widgets.prefix = prefix
>          self.widgets.mode = self.mode
>          self.widgets.ignoreContext = self.ignoreContext
>          self.widgets.ignoreRequest = self.ignoreRequest
>
> of course with some tests added.
>
>
> On 09/12/2012 03:35 PM, Roger wrote:
>>
>> Hi Marlthe
>>
>> Your commit is incompatilbe with many different concepts.
>>
>> For example:
>> If you have a form which injects an interface with directlyProvides
>> into the form. And this interface is responsible for adapt other
>> widgets, this will break because the new widgets don't get
>> adapted anymore during the updatWidgets call.
>>
>> Even more bad, you can't call update for force to switch to new
>> widgets because this involves widget value extraction and this
>> could badly fail if your form switched to other widgets based
>> on action handling.
>>
>> What is the reason that you moved the widget setup from
>> updateWidgets to form.update() call?
>>
>> Probably we can find another concept for your usecase?
>>
>> Regards
>> Roger Ineichen
>> _____________________________
>> END OF MESSAGE>
>>
>>> Betreff: [Checkins] SVN: z3c.form/trunk/ Initialize the field widget
>>
>> manager in the
>>>
>>> update-step, such that the widget update step is only responsible for
>>
>> actually updating
>>>
>>> the widgets. The change is required to support the situation where you
>>
>> want to
>>>
>>> change the co
>>>
>>> Log message for revision 127831:
>>>    Initialize the field widget manager in the update-step, such that the
>>
>> widget update
>>>
>>> step is only responsible for actually updating the widgets. The change is
>>
>> required to
>>>
>>> support the situation where you want to change the common widget prefix
>>
>> (which
>>>
>>> defaults to 'widgets.').
>>>
>>> Changed:
>>>    U   z3c.form/trunk/CHANGES.txt
>>>    U   z3c.form/trunk/src/z3c/form/form.py
>>>    U   z3c.form/trunk/src/z3c/form/group.py
>>>
>>> -=-
>>> Modified: z3c.form/trunk/CHANGES.txt
>>> ================================================================
>>> ===
>>> --- z3c.form/trunk/CHANGES.txt  2012-09-12 10:17:42 UTC (rev 127830)
>>> +++ z3c.form/trunk/CHANGES.txt  2012-09-12 11:52:05 UTC (rev 127831)
>>> @@ -2,6 +2,16 @@
>>>   CHANGES
>>>   =======
>>>
>>> +In next release ...
>>> +
>>> +- Initialize widgets in ``update`` step. The ``updateWidgets`` method
>>> +  is now responsible only for actually updating the widgets.
>>> +
>>> +  This allows updating the common widgets prefix before the individual
>>> +  widgets are updated, useful for situations where neither a form, nor
>>> +  a widgets prefix is desired.
>>> +
>>> +
>>>   2.8.3 (unreleased)
>>>   ------------------
>>>
>>>
>>> Modified: z3c.form/trunk/src/z3c/form/form.py
>>> ================================================================
>>> ===
>>> --- z3c.form/trunk/src/z3c/form/form.py 2012-09-12 10:17:42 UTC (rev
>>
>> 127830)
>>>
>>> +++ z3c.form/trunk/src/z3c/form/form.py 2012-09-12 11:52:05 UTC (rev
>>
>> 127831)
>>>
>>> @@ -126,8 +126,6 @@
>>>
>>>       def updateWidgets(self):
>>>           '''See interfaces.IForm'''
>>> -        self.widgets = zope.component.getMultiAdapter(
>>> -            (self, self.request, self.getContent()),
>>> interfaces.IWidgets)
>>>           self.widgets.mode = self.mode
>>>           self.widgets.ignoreContext = self.ignoreContext
>>>           self.widgets.ignoreRequest = self.ignoreRequest
>>> @@ -148,6 +146,8 @@
>>>
>>>       def update(self):
>>>           '''See interfaces.IForm'''
>>> +        self.widgets = zope.component.getMultiAdapter(
>>> +            (self, self.request, self.getContent()),
>>> interfaces.IWidgets)
>>>           self.updateWidgets()
>>>
>>>       def render(self):
>>>
>>> Modified: z3c.form/trunk/src/z3c/form/group.py
>>> ================================================================
>>> ===
>>> --- z3c.form/trunk/src/z3c/form/group.py        2012-09-12 10:17:42 UTC
>>> (rev
>>
>> 127830)
>>>
>>> +++ z3c.form/trunk/src/z3c/form/group.py        2012-09-12 11:52:05 UTC
>>> (rev
>>> 127831)
>>> @@ -34,8 +34,6 @@
>>>
>>>       def updateWidgets(self):
>>>           '''See interfaces.IForm'''
>>> -        self.widgets = zope.component.getMultiAdapter(
>>> -            (self, self.request, self.getContent()),
>>> interfaces.IWidgets)
>>>           for attrName in ('mode', 'ignoreRequest', 'ignoreContext',
>>>                            'ignoreReadonly'):
>>>               value = getattr(self.parentForm.widgets, attrName)
>>> @@ -44,7 +42,7 @@
>>>
>>>       def update(self):
>>>           '''See interfaces.IForm'''
>>> -        self.updateWidgets()
>>> +        super(Group, self).update()
>>>           groups = []
>>>           for groupClass in self.groups:
>>>               # only instantiate the groupClass if it hasn't already
>>> @@ -121,9 +119,10 @@
>>>
>>>           return changed
>>>
>>> -    def update(self):
>>> +    def updateWidgets(self):
>>>           '''See interfaces.IForm'''
>>> -        self.updateWidgets()
>>> +        super(GroupForm, self).updateWidgets()
>>> +
>>>           groups = []
>>>           for groupClass in self.groups:
>>>               # only instantiate the groupClass if it hasn't already
>>> @@ -135,7 +134,3 @@
>>>               group.update()
>>>               groups.append(group)
>>>           self.groups = tuple(groups)
>>> -        self.updateActions()
>>> -        self.actions.execute()
>>> -        if self.refreshActions:
>>> -            self.updateActions()
>>>
>>> _______________________________________________
>>> checkins mailing list
>>> checkins at zope.org
>>> https://mail.zope.org/mailman/listinfo/checkins
>>
>>
>>
>>
>
>
> --
> Best regards,
>  Adam GROSZER
> --
> Quote of the day:
> The soldiers fight, and the kings are heroes.
> - Jewish Proverb



-- 
Au revoir, et tous mes voeux pour un avenir plein de succès et de bonheur ––

Malthe Borch
mborch at gmail.com


More information about the checkins mailing list