Hi, I try to setup a little application but have a probably little problem with a ForbiddenAttribute exception on "location.locate" method. Here is my setup :
class IPhoto(IContainer,IContained): """Photo handling interface""" ... image = Bytes(...) ... class Photo(Folder): """Photo handling class""" ... image = None def __init__(self, image=None): super(Photo,self).__init__() self.__parent__ = self.__name__ = None if image: self.image = image ... class IEvent(IContained): """Event handling interface""" ... class Event(Persistent): """Event handling class""" ... def __init__(self): super(Event,self).__init__() self.__parent__ = self.__name__ = None In my event creation form (derived from formlib.AddForm), I put something like this, without a problem : def create(self, data): event = Event() if data.has_key('image'): event.image = Photo(image=data['image']) location.locate(event.image, event, 'image') form.applyChanges(event, self.form_fields, data) return event "event.image" access can then be granted easily in an URL through a "z3c.traverser" plug-in and everything works fine... until now ! Because when I'm trying to make the same thing in an edit form to update an existing event, an exception is raised : def edit(self, action, data): changed = False event = self.context if data.has_key('image'): event.image = Photo(image=data['image']) location.locate(event.image, event, 'image') changed = True return super(EventEditForm,self).edit(action, data) or changed Here is the traceback : Traceback (most recent call last): File "/usr/local/zope/3.3.0/lib/python/zope/publisher/publish.py", line 133, in publish result = publication.callObject(request, obj) File "/usr/local/zope/3.3.0/lib/python/zope/app/publication/zopepublication.py", line 161, in callObject return mapply(ob, request.getPositionalArguments(), request) File "/usr/local/zope/3.3.0/lib/python/zope/publisher/publish.py", line 108, in mapply return debug_call(obj, args) - __traceback_info__: <security proxied zope.app.publisher.browser.viewmeta.NewsEventEditForm instance at 0xa677e20c> File "/usr/local/zope/3.3.0/lib/python/zope/publisher/publish.py", line 114, in debug_call return obj(*args) File "/usr/local/zope/3.3/lib/python/zope/formlib/form.py", line 751, in __call__ self.update() File "/usr/local/zope/3.3/lib/python/zope/formlib/form.py", line 732, in update result = action.success(data) File "/usr/local/zope/3.3/lib/python/zope/formlib/form.py", line 582, in success return self.success_handler(self.form, self, data) File "/var/local/zope/3.3/lib/python/ulthar/forms/forms.py", line 104, in handle_edit_action self.edit_action(action,data) File "/var/local/zope/3.3/lib/python/ulthar/forms/forms.py", line 107, in edit_action if not self.edit(action, data): File "/var/local/zope/3.3/lib/python/usf/news/browser/event.py", line 85, in edit location.locate(event.image, event, 'image') File "/usr/local/zope/3.3.0/lib/python/zope/location/location.py", line 71, in locate object.__parent__ = parent ForbiddenAttribute: ('__parent__', <gallery.photo.Photo object at 0xa678f62c>) I've tried to setup different permissions and access rights, but without success. So any help would be great ! Thanks, Thierry -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean. _______________________________________________ Zope3-users mailing list Zope3-users@zope.org http://mail.zope.org/mailman/listinfo/zope3-users