[Checkins] SVN: Grokstar/trunk/src/grokstar/ Start using the catalog for calendar entries.

Martijn Faassen faassen at infrae.com
Thu Jan 25 16:51:57 EST 2007


Log message for revision 72231:
  Start using the catalog for calendar entries.
  

Changed:
  U   Grokstar/trunk/src/grokstar/blog.py
  U   Grokstar/trunk/src/grokstar/calendar.py

-=-
Modified: Grokstar/trunk/src/grokstar/blog.py
===================================================================
--- Grokstar/trunk/src/grokstar/blog.py	2007-01-25 21:32:43 UTC (rev 72230)
+++ Grokstar/trunk/src/grokstar/blog.py	2007-01-25 21:51:56 UTC (rev 72231)
@@ -2,11 +2,24 @@
 from datetime import datetime, timedelta
 
 from zope import schema
+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.catalog.field import FieldIndex
 
 import grok
+from grokstar.interfaces import IEntry
 
+def setup_catalog(catalog):
+    catalog['published'] = FieldIndex('published', IEntry)
+    
 class Blog(grok.Container, grok.Site):
 
+    grok.local_utility(IntIds, provides=IIntIds)
+    grok.local_utility(Catalog, provides=ICatalog, name='entry_catalog',
+                       setup=setup_catalog)
+    
     class fields:
         title = schema.TextLine(title=u'Title', default=u'')
         tagline = schema.TextLine(title=u'Tagline', default=u'')

Modified: Grokstar/trunk/src/grokstar/calendar.py
===================================================================
--- Grokstar/trunk/src/grokstar/calendar.py	2007-01-25 21:32:43 UTC (rev 72230)
+++ Grokstar/trunk/src/grokstar/calendar.py	2007-01-25 21:51:56 UTC (rev 72231)
@@ -1,6 +1,9 @@
 import random
 from datetime import datetime, timedelta
+from zope import component
 import grok
+from hurry.query.query import Query
+from hurry import query
 from blog import Blog
 
 class BlogYearTraverser(grok.Traverser):
@@ -85,11 +88,8 @@
         return entriesInDateRange(from_, until)
 
 def entriesInDateRange(from_, until):
-    entries = grok.getSite()['entries']
-    result = []
-    for entry in entries.values():
-        if from_ <= entry.published <= until:
-            result.append(entry)
+    entries = Query().searchResults(
+        query.Between(('entry_catalog', 'published'), from_, until))
     return sorted(
-        result, key=lambda entry: entry.published, reverse=True
+        entries, key=lambda entry: entry.published, reverse=True
         )



More information about the Checkins mailing list