Looks reasonable... I'm a bit uncomfortable with the sort-by-subobject-attribute code in orderObjects (the code that is called when sort order is not "position"). I'm wondering if a generic "IndexedFolder" implementation might be better for this behavior, where the user may define one or more indexes on the container itself. The indexes could named after attributes of subobjects. The indexes and a sort function for each index would be maintained on the container, and the API methods objectValues, objectIds, etc.would consult the indexes to return objects in sorted order dynamically (as opposed to just returning the presorted list of _objects, which needs to be manipulated statically after each insertion). This might be an argument to ditch the dynamic sorting feature until we better understand the use cases. That said, the feature isn't exposed in the mgmt interface, so it might be ok. But if people come to rely on it, it will be difficult to remove (and will never ever go away). Just a thought. - C On Mon, 2003-05-05 at 07:35, Yuppie wrote:
Hi!
Implementing the OrderedObjectManager proposal, we fleshed it out and modified it a bit. I made an initial checkin on a branch which reflects our current thinking. So this is your chance to discuss the changes before we merge it into the trunk.
The code yuppie-ordersupport-branch (Creating the branch went wrong a bit. Please just checkout lib/python/AccessControl, lib/python/OFS and lib/python/Products/OFSP.)
The original proposal: <http://dev.zope.org/Wikis/DevSite/Proposals/OrderedObjectManager>
Some key issues:
1.) OrderSupport is a mixin class for ObjectManager. (using the CopySupport / FindSupport / UndoSupport pattern)
2.) 'Folder (Ordered)' is a 'Folder' with OrderSupport. (using the 'Script (Python)' pattern for the meta_type to avoid a name clash with the existing OrderedFolder product or names like OrderedFolderLite)
3.) For the ZMI, we use the same 'main.dtml' as the ObjectManager. This way we avoid redundant code and make it easier for products that need to change the 'main.dtml'.
If there are no objections, I'm going to land this soon.
Cheers,
Yuppie
PS: For API Help, we have to copy (!) the Interface to OFSP/help? Right?
_______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org http://mail.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope )