I have this serious show-stopper problem that I do not know how to get around, so any input is appreciated.

I am building a Product that is basically a Zope interface to a set of non-Zope APIs to a directory system.

In my product at one point I receive a list of (not zope-based) objects from a factory method in the API set. These objects all represent Persons with all necesary attributes and lazy DB lookup etc. Very neat.

What is not so neat is that I have no means of zope-unpack them and display them in a ZPT.

I have tried the following in my product class:

    def _zopify(self, o):
        # wrap object o in a an Acquisition.ImplicitAcquisitionWrapper
        # add __allow_access_to_unprotected_subobjects = 1
        # Return o
        o.__allow_access_to_unprotected_subobjects = 1
        return Acquisition.ImplicitAcquisitionWrapper(o, self)

and in my product code I do this.

        plist = get_non_zope_person_object_list(...)
        return [self._zopify(person) for person in plist ]

but I still get

""" The container has no security assertions. Access to 'lname' of (Products.pdbapi.person.Person instance at 0x03449DA0) denied. """

errors when I try to access the attributes of a person object in the list.

I am very reluctant to add zope-specific stuff to the set of APIs because they are used in several other places that are not Zope-specific.

I also would like not to have to duplicate code existing in the API just to have it become Zope-friendly, so I am trying to find alternative paths here.

Any help is appreciated.


-- -------------------------------------------------------------------
Dario Lopez-Kšsten, IT Systems & Services Chalmers University of Tech.
"...and click? damn, I need to kill -9 Word again..." - b using macosx
Zope-Dev maillist - Zope-Dev@zope.org
** No cross posts or HTML encoding! **
(Related lists - http://mail.zope.org/mailman/listinfo/zope-announce
http://mail.zope.org/mailman/listinfo/zope )

Reply via email to