Mercurial > hg > Feedworm
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)