[Zope3-dev] Form framework, adapters and pau

Dominik Huber dominik.huber at projekt01.ch
Mon Apr 4 06:42:08 EDT 2005


A few months ago the following code block was removed in editview.py, 
editwizard.py and schemadisplay.py (revision 29418):

    def _setUpWidgets(self):
        adapted = self.schema(self.context)
        if adapted is not self.context:
            if not ILocation.providedBy(adapted):
                adapted = LocationProxy(adapted)
            adapted.__parent__ = self.context
        self.adapted = adapted
        setUpEditWidgets(self, self.schema, source=self.adapted,
                         names=self.fieldNames)

As a consequence each trusted adapter class should now implement 
ILocation that the TrustedAdapterFactory can set the location of adapter 
instances correctly. Otherwise, only the global authentication is 
involved and the edit view fails if any local principal tries to edit a 
certain field (security.canWrite(source, name) in zope.app.form.utility 
line 207).

I would like to revert those changes. IMO a framework like the form 
framework knows the context (location) and adapts that context to a 
certain schema. If the following procedures depends on location 
information, the framework itself should pass such informations in a 
smart way. It's an unnecessary <se?lp=ende&p=/Mn4k.&search=unnecessary> 
expense <se?lp=ende&p=/Mn4k.&search=expense> to force all schema 
adapters to implement ILocation:

- The solution using the location proxy seems fairly famillar
  compared with the container framework and containment that does not
  provide ILocation.

- An adapter that implements more than one interface cannot be registered
  with the implicit adapts and implements informations.

- A regular schema does not extend ILocation therefore it is not obvious to
  write an adapter implementing ILocation.

Any objections?

Regards,
Dominik Huber








More information about the Zope3-dev mailing list