# HG changeset patch # User Dirk Olmes # Date 1314108155 -7200 # Node ID 2cd30af937fa0e4df0d588e37b9ac31647b1a877 # Parent 5b131f82057d3b66b11949a674739b79b4382fe0 add the required methods for determining if a feed needs to be updated diff -r 5b131f82057d -r 2cd30af937fa backend/couchdb/CouchDbBackend.py --- a/backend/couchdb/CouchDbBackend.py Tue Aug 23 14:36:58 2011 +0200 +++ b/backend/couchdb/CouchDbBackend.py Tue Aug 23 16:02:35 2011 +0200 @@ -1,7 +1,9 @@ from Preferences import Preferences +from backend.couchdb.Feed import Feed import couchdb + DATABASE = "feedtest" class CouchDbBackend(object): @@ -38,10 +40,15 @@ raise Exception("not yet implemented") def updateAllFeeds(self): - raise Exception("not yet implemented") + # TODO use a view instead of iterating all feeds + allFeeds = Feed.all(self.database) + for feed in allFeeds: + if feed.needsUpdate(): + print("feed needs update " + str(feed)) def expireFeedEntries(self): - raise Exception("not yet implemented") + print("Expiring feeds is not yet implemented") +# raise Exception("not yet implemented") def dispose(self): # nothing to do here diff -r 5b131f82057d -r 2cd30af937fa backend/couchdb/Feed.py --- a/backend/couchdb/Feed.py Tue Aug 23 14:36:58 2011 +0200 +++ b/backend/couchdb/Feed.py Tue Aug 23 16:02:35 2011 +0200 @@ -1,3 +1,7 @@ + +from datetime import datetime + +DATE_FORMAT = "%Y-%m-%d %H:%M:%S" class Feed(object): @staticmethod @@ -10,3 +14,15 @@ def __getattr__(self, key): return self.row.value[key] + + def needsUpdate(self): + updateDate = self._nextUpdateDate() + delta = datetime.now() - updateDate + return delta.total_seconds() > self._updateIntervalInSeconds() + + def _nextUpdateDate(self): + nextUpdateString = self.next_update + return datetime.strptime(nextUpdateString, DATE_FORMAT) + + def _updateIntervalInSeconds(self): + return self.update_interval * 60