changeset 139:2cd30af937fa

add the required methods for determining if a feed needs to be updated
author Dirk Olmes <dirk@xanthippe.ping.de>
date Tue, 23 Aug 2011 16:02:35 +0200
parents 5b131f82057d
children e927c6910c38
files backend/couchdb/CouchDbBackend.py backend/couchdb/Feed.py
diffstat 2 files changed, 25 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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
--- 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