view backend/couchdb/FeedEntry.py @ 205:adf7f617bda9

make the name of the design document configurable via command line switch. When cloning the feedworm db, the design document is no longer the same as the database name
author dirk
date Sat, 02 Jun 2012 04:24:49 +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)