# HG changeset patch # User dirk # Date 1315952275 -7200 # Node ID e5d492595bdb2eeb226571f5db9f124cf51e8c5f # Parent e26210be221f457db1a23da5057434e4a2e57d9a the view returns feed entries for a feed sorted by update date now, no need to do sorting in-memory diff -r e26210be221f -r e5d492595bdb backend/couchdb/CouchDbBackend.py --- a/backend/couchdb/CouchDbBackend.py Wed Sep 14 00:17:01 2011 +0200 +++ b/backend/couchdb/CouchDbBackend.py Wed Sep 14 00:17:55 2011 +0200 @@ -53,8 +53,6 @@ def _retrieveEntriesForSelectedFeed(self, hideReadEntries): viewResults = FeedEntry.entriesForFeed(self.selectedFeed, self.database) - # TODO update date is a string ... convert to a ListDateTimeField for better sort support - viewResults.sort(FeedEntry.compareByUpdateDate, reverse=True) if hideReadEntries: filterFunc = lambda feedEntry: feedEntry.read == False viewResults = filter(filterFunc, viewResults) diff -r e26210be221f -r e5d492595bdb backend/couchdb/FeedEntry.py --- a/backend/couchdb/FeedEntry.py Wed Sep 14 00:17:01 2011 +0200 +++ b/backend/couchdb/FeedEntry.py Wed Sep 14 00:17:55 2011 +0200 @@ -1,6 +1,6 @@ from backend.couchdb.ListDateTimeField import ListDateTimeField -from couchdb.mapping import BooleanField, DateTimeField, Document, TextField +from couchdb.mapping import BooleanField, Document, TextField from datetime import datetime import CouchDb @@ -11,7 +11,7 @@ link = TextField() title = TextField() summary = TextField() - updated = DateTimeField() + updated = ListDateTimeField() feed = TextField() @staticmethod @@ -29,12 +29,10 @@ return FeedEntry.view(database, CouchDb.readFeedEntriesByCreateDate(), endkey=end) @staticmethod - def compareByUpdateDate(first, second): - return cmp(first, second) - - @staticmethod def entriesForFeed(feed, database): - viewResults = FeedEntry.view(database, CouchDb.feedEntriesByFeed(), key=feed.id) + ''' the definition of the view makes sure that the entries come out sorted by udpate date ''' + viewResults = FeedEntry.view(database, CouchDb.feedEntriesByFeed(), startkey=[feed.id], + endkey=[feed.id, {}]) return list(viewResults) def markRead(self, database): @@ -47,4 +45,3 @@ else: self.read = True self.store(database) -