Mercurial > hg > Feedworm
view backend/couchdb/FeedEntry.py @ 206:f74fe7cb5091
when updating feeds, only ever create new Feed objects for entries that are younger than the current expire date. This ensures that we do not see old, read, expired entries again
author | dirk |
---|---|
date | Sat, 02 Jun 2012 04:30:04 +0200 |
parents | 9d422fa90096 |
children | bb3c851b18b1 |
line wrap: on
line source
from backend.couchdb.ListDateTimeField import ListDateTimeField from couchdb.mapping import BooleanField, Document, TextField from datetime import datetime import CouchDb class FeedEntry(Document): doctype = TextField(default="feedEntry") create_timestamp = ListDateTimeField(default=datetime.now()) read = BooleanField(default=False) link = TextField() title = TextField() summary = TextField() updated = ListDateTimeField() feed = TextField() @staticmethod def findByLink(link, database): result = FeedEntry.view(database, CouchDb.feedEntryByLink(), key=link) try: return iter(result).next() except StopIteration: return None @staticmethod def getReadFeedEntriesOlderThan(timestamp, database): end = [timestamp.year, timestamp.month, timestamp.day, timestamp.hour, timestamp.minute, timestamp.second] return FeedEntry.view(database, CouchDb.readFeedEntriesByCreateDate(), endkey=end) @staticmethod def entriesForFeed(feed, database): ''' the definition of the view makes sure that the entries come out sorted by udpate date ''' viewResults = FeedEntry.view(database, CouchDb.feedEntriesByFeed(), startkey=[feed.id], endkey=[feed.id, {}]) return list(viewResults) def markRead(self, database): if not self.read: self.read = True self.store(database) def toggleRead(self, database): if self.read: self.read = False else: self.read = True self.store(database)