I found something strange in metadata when copying a persistent object.

My situation is the following:
I have a container with some elements inside. I create a copy of this container 


(Actually I use zope.copypastemove.interfaces.IObjectCopier(my_container) but 
this calls the adapter mentioned above.)

Side note: Is this the right way to copy an persistent object nowadays?

This happens tho dublin core metadata then:
As zope.dublincore.timeannotators.CreatedAnnotator is subscribed to 
zope.lifecycleevent.IObjectCreatedEvent it gets called as the ObjectCopiedEvent 
is a subclass of ObjectCreatedEvent. The copy of the container gets a new 
creation date set in its metadata.

But zope.copypastemove.dispatchToSublocations calls the subscribers for the 
sublocations using 
zope.component.subscribers((sub, event), None)

So the zope.dublincore.timeannotators.CreatedAnnotator does not get called as 
it is not registered for (object, event) but only for (event,).

This leads to a strange situation: the metadata of the copied container get 
updated but not the metadata of its contents.
This behavior has not changed since version 3.4.0 which was about 2,5 years ago.

I think this is a long-standing bug and it should it be fixed in 
zope.dublincore by registering the subscribers for (object, event)? 
(Additionally or exclusively, I'm not sure.)

Any thoughts?

Yours sincerely,
Michael Howitz · m...@gocept.com · software developer
gocept gmbh & co. kg · forsterstraße 29 · 06112 halle (saale) · germany
http://gocept.com · tel +49 345 1229889 8 · fax +49 345 1229889 1
Zope and Plone consulting and development

Zope-Dev maillist  -  Zope-Dev@zope.org
**  No cross posts or HTML encoding!  **
(Related lists - 
 https://mail.zope.org/mailman/listinfo/zope )

Reply via email to