Skip to main content

BTree-based folder implementation with order support

Project description

plone.folder

Overview

This package provides a base class for folderish content types based on B-trees, a.k.a. “large folders” in Plone. Storing content in such folders provides significant performance benefits over regular folders. However, “large folders” do not support explicit ordering of their contents out-of-the box. That is, you cannot manually specify the order of items within the folder, you can only sort things according to a given criteria after fetching items from the folder.

Many times, though, it is desirable to be able to explicitly order a folder’s content, for example for items that are related to site navigation. Sorting alphabetically often doesn’t make sense here.

To compensate plone.folder provides ordering support for B-tree folders via the above mentioned base class, which can make use of an adapter to store the actual order information. It also comes with two sample adapter implementations:

  • A default adapter handling order information for all objects contained in a folder. This adapter can be used to build fully backwards-compatible drop-in replacements for folderish content. In other words, when using this adapter B-tree-based folders should behave just like the “regular” folder implementation, but provide some of the performance benefits at the same time.

  • An alternative adapter implementation that is targeted towards sites with only a relatively small percentage of content for which (explicit) order matters. It’ll only manage order information for certain content types (via a marker interface).

The latter allows to not having to separate such content from “non-orderable” content. Up to now many large sites ended up storing “orderable” items — for example everything related to navigation and typically only a few — in regular folders and the bulk of the content in “large” folders, most of the time solely for performance reasons. This adapter will hopefully help avoid having to make this distinction in the future and still provide the better performance characteristics of B-tree folders.

Changelog

1.0 - 2010-07-18

  • Avoid dangerous memoization in the DefaultOrdering adapter. [hannosch]

  • Update license to GPL version 2 only. [hannosch]

1.0b5 - 2010-03-06

  • Remove support for setting __parent__ and __name__ for content providing IContained as it can cause severe performance issues when used on Zope 2.x. [witsch]

1.0b4 - 2010-02-17

  • Register all ordering adapter by default now that they can co-exist. [witsch]

  • Add __getitem__ support to the default ordering adapter to help previous/next support in plone.app.folder. [witsch]

1.0b3 - 2010-02-09

  • Make sure order changes are persisted when using the partial ordering adapter. [hannosch, witsch]

1.0b2 - 2010-01-28

  • Make the dependency on Products.CMFCore a soft one. [witsch]

  • Added an ‘unordered’ adapter which can be used when no explicit ordering is needed. [davisagli]

  • Allow the use of different named adapters to IOrdering, with the name determined by the folder’s _ordering attribute. [davisagli]

1.0b1 - 2009-10-10

  • Fix the WebDAV content creation process by properly returning a NullResource when required. [optilude]

1.0a3 - 2009-05-11

  • Let objectIds always return all object ids, even with partial ordering. [witsch]

1.0a2 - 2009-05-07

  • Fix a bug in the default ordering that would cause the pos dict to get out of sync when an item is deleted. [optilude]

  • Declare IContainer support. [optilude]

  • Properly set __parent__ and __name__ for IContained in _setOb(). [optilude]

  • Add __getitem__, needed when not using the CMF mix-in. [optilude]

  • Added __setitem__, __contains__ and __delitem__ to support a dict-like API. [optilude]

  • Fix issue with removing non-orderable content for partial ordering suppport. [witsch]

  • Fix getObjectPosition to return a value representing “no position” for non-orderable content instead of raising an error. [witsch]

  • Fix boolean value of the btree-based folder base class. [witsch]

  • Factor CMF out of the base classes for the new btree-based folder class and simplify things a bit afterwards. [witsch]

  • Add adapter providing explicit ordering only for “orderable” content. [witsch]

  • Clean up tests and their setup. [witsch]

1.0a1 - 2008-05-27

  • Initial release [optilude, tesdal, witsch]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

plone.folder-1.0.zip (36.5 kB view details)

Uploaded Source

File details

Details for the file plone.folder-1.0.zip.

File metadata

  • Download URL: plone.folder-1.0.zip
  • Upload date:
  • Size: 36.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for plone.folder-1.0.zip
Algorithm Hash digest
SHA256 ddaae08d17609c321b792bc2f5608c51d35dfa003b0bf8d161e08f465fef6288
MD5 1bfd3c61e207240551bf8b92432c1297
BLAKE2b-256 280bbaffe30239a4ba9e16a37b4d0960c71689f128ec6a266916aa7df55927e6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page