To actually change the obj-position in its parent you can utilize Zope2's OFS.IOrderedContainer
-interface for accessing the relevant methods and hook it up on zope.lifecycleevent.interfaces.IObjectAddedEvent
, like in this Plone-addon "adi.revertorder" (disclaimer: author=meh):
In you configure.zcml
register the eventlistener:
<subscriber for="Products.CMFCore.interfaces.IContentish
zope.lifecycleevent.interfaces.IObjectAddedEvent"
handler=".subscriber.revertOrder" />
And in the handler (here: subscriber.py
), define the called method:
from Acquisition import aq_inner
from Acquisition import aq_parent
from OFS.interfaces import IOrderedContainer
def revertOrder(obj, eve):
"""
Use IOrderedContainer interface to move an object to top of folder on creation.
"""
parent = obj.aq_inner.aq_parent
ordered = IOrderedContainer(parent, None)
if ordered is not None:
ordered.moveObjectToPosition(obj.getId(), 0)
Applies to Dexterity- and Archetype-based contenttypes.
See also the docs: http://docs.plone.org/external/plone.app.dexterity/docs/advanced/event-handlers.html