Mercurial > hg > Feedworm
view backend/sqlalchemy/Feed.py @ 155:a05719a6175e
move common functionality into an abstract backend class, have both backends inherit from it. Implement enough of the couchdb backend that reading feeds (and marking feed entries as read) is possible
author | Dirk Olmes <dirk@xanthippe.ping.de> |
---|---|
date | Sat, 27 Aug 2011 08:52:03 +0200 |
parents | a4b2077c9603 |
children | a3c945ce434c |
line wrap: on
line source
from datetime import datetime, timedelta import FeedEntry class Feed(object): @staticmethod def all(session): return session.query(Feed).order_by(Feed.title).all() def __init__(self, title, rss_url): self.title = title self.rss_url = rss_url # default: update every 60 minutes self.update_interval = 60 self.incrementNextUpdateDate() self.auto_load_entry_link = False self.always_open_in_browser = False def __repr__(self): return "<Feed (%d) %s>" % (self.pk, self.title) def userPresentableString(self): return self.title def entriesSortedByUpdateDate(self, hideReadEntries=False): if hideReadEntries: sortedEntries = self._unreadEntries() else: sortedEntries = list(self.entries) sortedEntries.sort(FeedEntry.compareByUpdateDate) return sortedEntries def _unreadEntries(self): retValue = [] for entry in self.entries: if not entry.read: retValue.append(entry) return retValue def incrementNextUpdateDate(self): delta = timedelta(minutes=self.update_interval) self.next_update = datetime.now() + delta def markAllEntriesRead(self): for entry in self.entries: entry.markRead() def takeChangesFrom(self, dict): for key in dict.keys(): setattr(self, key, dict[key])