[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