view Feed.py @ 35:aaec263f07ca

Feeds manage the point in time when the next update should happen. FeedUpdater only updates feeds that are due.
author Dirk Olmes <dirk@xanthippe.ping.de>
date Wed, 05 May 2010 03:07:59 +0200
parents 5bb57caa8f66
children a8442c3487b5
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()

    def __repr__(self):
        return "<Feed (%d) %s>" % (self.pk, self.title)

    def userPresentableString(self):
        return self.title
    
    def entriesSortedByUpdateDate(self):
        sortedEntries = list(self.entries)
        sortedEntries.sort(FeedEntry.compareByUpdateDate)
        return sortedEntries

    def incrementNextUpdateDate(self):
        delta = timedelta(minutes=self.update_interval)
        self.next_update = datetime.now() + delta