diff backend/sqlalchemy/FeedList.py @ 119:04a730f9d07d backend

move all sqlalchemy related classes to the respective sub-package. use a backend to abstract from access to the data
author Dirk Olmes <dirk@xanthippe.ping.de>
date Sun, 21 Aug 2011 03:55:16 +0200
parents FeedList.py@5585f3d23541
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/backend/sqlalchemy/FeedList.py	Sun Aug 21 03:55:16 2011 +0200
@@ -0,0 +1,23 @@
+
+from Feed import Feed
+from FeedEntry import FeedEntry
+from Preferences import Preferences
+from sqlalchemy.orm import joinedload
+
+def getFeeds(session):
+    preferences = Preferences(session)
+    if preferences.showOnlyUnreadFeeds():
+        return _getUnreadFeeds(session)
+    else:
+        return Feed.all(session)
+
+def _getUnreadFeeds(session):
+    query = session.query(FeedEntry).filter(FeedEntry.read == 0)
+    queryWithOptions = query.options(joinedload("feed"))
+    result = queryWithOptions.all()
+    return _collectFeeds(result)
+
+def _collectFeeds(feedEntries):
+    feeds = [entry.feed for entry in feedEntries]
+    uniqueFeeds = set(feeds)
+    return list(uniqueFeeds)