[Checkins] SVN: zc.catalog/trunk/src/zc/catalog/extentcatalog. add a simple NonPopulatingExtent

Gary Poster gary at zope.com
Tue Jun 5 16:21:46 EDT 2007


Log message for revision 76383:
  add a simple NonPopulatingExtent

Changed:
  U   zc.catalog/trunk/src/zc/catalog/extentcatalog.py
  U   zc.catalog/trunk/src/zc/catalog/extentcatalog.txt

-=-
Modified: zc.catalog/trunk/src/zc/catalog/extentcatalog.py
===================================================================
--- zc.catalog/trunk/src/zc/catalog/extentcatalog.py	2007-06-05 19:47:07 UTC (rev 76382)
+++ zc.catalog/trunk/src/zc/catalog/extentcatalog.py	2007-06-05 20:21:46 UTC (rev 76383)
@@ -125,6 +125,21 @@
         return self.filter(self, uid, obj)
 
 
+class NonPopulatingExtent(Extent):
+    """Base class for populating extent.
+    
+    This simple, no-op implementation comes in handy surprisingly often
+    for catalogs that handle a very contained domain within an application.
+    """
+
+    interface.implements(interfaces.ISelfPopulatingExtent)
+
+    populated = False
+
+    def populate(self):
+        self.populated = True
+
+
 class Catalog(catalog.Catalog):
     interface.implements(interfaces.IExtentCatalog)
 

Modified: zc.catalog/trunk/src/zc/catalog/extentcatalog.txt
===================================================================
--- zc.catalog/trunk/src/zc/catalog/extentcatalog.txt	2007-06-05 19:47:07 UTC (rev 76382)
+++ zc.catalog/trunk/src/zc/catalog/extentcatalog.txt	2007-06-05 20:21:46 UTC (rev 76383)
@@ -295,17 +295,15 @@
 base for implementing such an extent, with a method that selects content item
 0 (created and registered above)::
 
-    >>> class PopulatingExtent(extentcatalog.FilterExtent):
+    >>> class PopulatingExtent(
+    ...     extentcatalog.FilterExtent,
+    ...     extentcatalog.NonPopulatingExtent):
     ...
-    ...     interface.implements(interfaces.ISelfPopulatingExtent)
-    ...
-    ...     populated = False
-    ...
     ...     def populate(self):
     ...         if self.populated:
     ...             return
     ...         self.add(intid.getId(root[0]), root[0])
-    ...         self.populated = True
+    ...         super(PopulatingExtent, self).populate()
 
 Creating a catalog based on this extent ignores objects in the
 database already::



More information about the Checkins mailing list