# HG changeset patch # User Paul Boddie # Date 1383738061 -3600 # Node ID 14b1c0fbe11cda2f3eccbeb0643de57f393cbc51 # Parent c0a8ebaa42cf2e40037ca55359db79d2bbf0be3e Made the convenience constructors classes for increased flexibility. Tidied and added docstrings. diff -r c0a8ebaa42cf -r 14b1c0fbe11c MoinSupport.py --- a/MoinSupport.py Wed Nov 06 12:33:12 2013 +0100 +++ b/MoinSupport.py Wed Nov 06 12:41:01 2013 +0100 @@ -1093,7 +1093,7 @@ # Content storage support. -# Specific storage mechanisms. +# Underlying storage mechanisms. class SubpageItemStore(GeneralItemStore): @@ -1187,11 +1187,32 @@ finally: self.writelock.release() -# General item store classes. +def getDirectoryItemStoreForPage(page, item_dir, lock_dir): + + """ + A convenience function returning a directory-based store for the given + 'page', using the given 'item_dir' and 'lock_dir'. + """ + + item_dir_path = tuple(item_dir.split("/")) + lock_dir_path = tuple(lock_dir.split("/")) + return DirectoryItemStore(page.getPagePath(*item_dir_path), page.getPagePath(*lock_dir_path)) + +def getSubpageItemStoreForPage(page, lock_dir): + + """ + A convenience function returning a subpage-based store for the given + 'page', using the given 'lock_dir'. + """ + + lock_dir_path = tuple(lock_dir.split("/")) + return SubpageItemStore(page, page.getPagePath(*lock_dir_path)) + +# Page-oriented item store classes. class ItemStoreBase: - "Support for page-specific item stores." + "Access item stores via pages, observing page access restrictions." def __init__(self, page, store): self.page = page @@ -1285,27 +1306,20 @@ def next(self): return self.store.next() -def getDirectoryItemStoreForPage(page, item_dir, lock_dir): - item_dir_path = tuple(item_dir.split("/")) - lock_dir_path = tuple(lock_dir.split("/")) - return DirectoryItemStore(page.getPagePath(*item_dir_path), page.getPagePath(*lock_dir_path)) +# Convenience store classes. -def getSubpageItemStoreForPage(page, lock_dir): - lock_dir_path = tuple(lock_dir.split("/")) - return SubpageItemStore(page, page.getPagePath(*lock_dir_path)) - -# Convenience store constructors. - -def ItemStore(page, item_dir="items", lock_dir="item_locks"): +class ItemStore(ItemStoreBase): "Store items in a directory via a page." - return ItemStoreBase(page, getDirectoryItemStoreForPage(page, item_dir, lock_dir)) + def __init__(self, page, item_dir="items", lock_dir="item_locks"): + ItemStoreBase.__init__(self, page, getDirectoryItemStoreForPage(page, item_dir, lock_dir)) -def ItemSubpageStore(page, lock_dir="item_locks"): +class ItemSubpageStore(ItemStoreBase): "Store items in subpages of a page." - return ItemStoreBase(page, getSubpageItemStoreForPage(page, lock_dir)) + def __init__(self, page, lock_dir="item_locks"): + ItemStoreBase.__init__(self, page, getSubpageItemStoreForPage(page, lock_dir)) # vim: tabstop=4 expandtab shiftwidth=4