view backend/AbstractBackend.py @ 204:4cb22b47b659

Due to a bug in CouchDB it's possible that a view still references deleted documents. Detect this case and don't add NoneType objects into the list of feeds.
author dirk
date Tue, 03 Apr 2012 05:35:13 +0200
parents 3bcf39181f6e
children f74fe7cb5091
line wrap: on
line source


from datetime import datetime, timedelta

class AbstractBackend(object):
    def __init__(self):
        self.feeds = []
        self.selectedFeed = None
        self.feedEntries = None
        self.selectedFeedEntry = None

    def dispose(self):
        pass

    #
    # handling of feeds
    #

    def selectFeed(self, index):
        self.selectedFeed = self.feeds[index]
        self.feedEntries = None
        return self.selectedFeed

    def entriesForSelectedFeed(self):
        if self.feedEntries is None:
            hideReadEntries = self.preferences().hideReadFeedEntries()
            self.feedEntries = self._retrieveEntriesForSelectedFeed(hideReadEntries)
        return self.feedEntries

    def _calculateExpireDate(self):
        now = datetime.now()
        daysToKeepFeedEntries = self.preferences().daysToKeepFeedEntries()
        delta = timedelta(days=daysToKeepFeedEntries)
        return now - delta

    #
    # handling of the selected feed entry
    #

    def selectFeedEntry(self, index):
        self.selectedFeedEntry = self.feedEntries[index]
        self._markSelectedFeedEntryRead()
        return self.selectedFeedEntry