diff backend/sqlalchemy/FeedUpdater.py @ 141:6ea813cfac33

pull out common code for updating a feed into an abstract class, have the sqlalchemy backend use that class.
author Dirk Olmes <dirk@xanthippe.ping.de>
date Wed, 24 Aug 2011 10:53:46 +0200
parents 862760b161b4
children 1524e1cefd39
line wrap: on
line diff
--- a/backend/sqlalchemy/FeedUpdater.py	Wed Aug 24 09:39:10 2011 +0200
+++ b/backend/sqlalchemy/FeedUpdater.py	Wed Aug 24 10:53:46 2011 +0200
@@ -1,4 +1,5 @@
 
+from backend.AbstractFeedUpdater import AbstractFeedUpdater, FeedUpdateException
 from datetime import datetime
 from Feed import Feed
 from FeedEntry import FeedEntry
@@ -46,39 +47,18 @@
     FeedUpdater(session, newFeed).update()
 
 
-class FeedUpdater(object):
+class FeedUpdater(AbstractFeedUpdater):
     def __init__(self, session, feed):
+        AbstractFeedUpdater.__init__(self, feed)
         self.session = session
-        self.feed = feed
-
-    def update(self):
-        log.info("updating " + self.feed.rss_url)
-        result = self.getFeed()
-        for entry in result.entries:
-            self.processEntry(entry)
-        self.feed.incrementNextUpdateDate()
 
-    def getFeed(self):
-        result = feedparser.parse(self.feed.rss_url)
-        # bozo flags if a feed is well-formed.
-#        if result["bozo"] > 0:
-#            raise FeedUpdateException()
-        status = result["status"]
-        if status >= STATUS_ERROR:
-            raise FeedUpdateException("HTTP status " + str(status))
-        return result
-
-    def processEntry(self, entry):
-        normalize(entry)
+    def _processEntry(self, entry):
         feedEntry = FeedEntry.findById(entry.id, self.session)
         if feedEntry is None:
-            self.createFeedEntry(entry)
+            self._createFeedEntry(entry)
 
-    def createFeedEntry(self, entry):
+    def _createFeedEntry(self, entry):
         new = FeedEntry.create(entry)
         new.feed = self.feed
         self.session.add(new)
         log.info("new feed entry: " + entry.title)
-
-class FeedUpdateException(Exception):
-    pass