Peter Bengtsson wrote at 2006-12-4 11:52 +0000:
... If I try to do it in code like this::
def _uploadPhoto(self, file): adder = self.manage_addProduct['Photo'].manage_addPhoto adder('photo', '', file, **photo_settings)
Then I get this error::
... File "/home/peterbe/zope/zope288/Products/Mest/ProductPhotoBase.py", line 122, in uploadPhoto self._addProductPhoto(photo_id, unicodify(comment).strip(), photofile) File "/home/peterbe/zope/zope288/Products/Mest/ProductPhotoBase.py", line 130, in _addProductPhoto photo_adder = self.manage_addProduct['Photo'].manage_addPhoto File "/home/peterbe/zope/zope288/lib/python/App/FactoryDispatcher.py", line 26, in __getitem__ return self.__bobo_traverse__(None, name) File "/home/peterbe/zope/zope288/lib/python/App/FactoryDispatcher.py", line 29, in __bobo_traverse__ product=self.aq_acquire('_getProducts')()._product(name) AttributeError: LazyMap instance has no attribute '_product'
Apparently, something at or above your "Collection" instance defines a "_getProducts" -- as something to return a catalog search result. Now, "_getProducts" is assumed to be provided by the Zope application object and not by any intermediate instance. As you see, Zope's product accessing breaks when this requirement is violated. Identify the "_getProducts" and rename it. -- Dieter