[z3-checkins] r43992 - z3/NudgeNudge/trunk/src/nudgenudge

philikon at codespeak.net philikon at codespeak.net
Sat Jun 2 15:32:07 CEST 2007


Author: philikon
Date: Sat Jun  2 15:31:59 2007
New Revision: 43992

Modified:
   z3/NudgeNudge/trunk/src/nudgenudge/app.py
Log:
Merge the 'indexes-refactoring' branch, even though grok doesn't expose
zc.catalog's ValueIndex yet (using FieldIndex for now).


Modified: z3/NudgeNudge/trunk/src/nudgenudge/app.py
==============================================================================
--- z3/NudgeNudge/trunk/src/nudgenudge/app.py	(original)
+++ z3/NudgeNudge/trunk/src/nudgenudge/app.py	Sat Jun  2 15:31:59 2007
@@ -1,8 +1,6 @@
 import grok
+from grok import index
 from zope import schema, component, interface
-from zope.app.intid import IntIds
-from zope.app.intid.interfaces import IIntIds
-from zope.app.catalog.catalog import Catalog
 from zope.app.catalog.interfaces import ICatalog
 from zope.app.authentication import PluggableAuthentication
 from zope.app.authentication.principalfolder import (PrincipalFolder,
@@ -14,8 +12,6 @@
 from zope.app.securitypolicy.interfaces import IRolePermissionManager
 from zope.app.securitypolicy.role import LocalRole
 
-from zc.catalog.catalogindex import ValueIndex
-
 from nudgenudge.interfaces import IReview
 from nudgenudge.review import Review
 
@@ -23,10 +19,6 @@
 grok.define_permission('nudge.EditReview')
 grok.define_permission('nudge.DeleteReview')
 
-def setup_catalog(catalog):
-    catalog['package_name'] = ValueIndex('package_name', IReview, False)
-    catalog['author'] = ValueIndex('author', IReview, False)
-
 def setup_pau(pau):
     pau['principals'] = PrincipalFolder('nudge.principals.')
     pau.authenticatorPlugins = ('principals',)
@@ -41,14 +33,20 @@
     return factory
 
 class NudgeNudge(grok.Application, grok.Container):
-    grok.local_utility(IntIds, IIntIds) # needed for the catalog
-    grok.local_utility(Catalog, ICatalog, setup=setup_catalog)
     grok.local_utility(PluggableAuthentication, IAuthentication,
                        setup=setup_pau)
     grok.local_utility(role_factory(u'Nudge Reviewers'), IRole,
                        name='nudge.Reviewers',
                        name_in_container='nudge.Reviewers')
 
+class ReviewIndexes(grok.Indexes):
+    grok.site(NudgeNudge)
+    grok.context(IReview)
+
+    # TODO would prefer to use zc.catalog's ValueIndex here
+    package_name = index.Field()
+    author = index.Field()
+
 @grok.subscribe(NudgeNudge, grok.IObjectAddedEvent)
 def grant_permissions(app, event):
     role_manager = IRolePermissionManager(app)
@@ -60,7 +58,8 @@
         self.results = []
         if package:
             catalog = component.getUtility(ICatalog)
-            query = {'any_of': (package,)}
+            # TODO zc.catalog's ValueIndex has a nicer query interface
+            query = (package, package)
             self.results = catalog.searchResults(package_name=query)
 
 class CreateReview(grok.AddForm):


More information about the z3-checkins mailing list