view backend/couchdb/Feed.py @ 259:304917762618 default tip

implementation of feed updates
author Dirk Olmes <dirk@xanthippe.ping.de>
date Tue, 12 Mar 2019 02:41:22 +0100
parents bb3c851b18b1
children
line wrap: on
line source

# -*- coding: utf-8 -*-
from couchdb.mapping import BooleanField, DateTimeField, Document, IntegerField, TextField
from datetime import datetime, timedelta
import CouchDb

class Feed(Document):
    doctype = TextField(default="feed")
    title = TextField()
    rss_url = TextField()
    update_interval = IntegerField(default=60)
    next_update = DateTimeField()
    auto_load_entry_link = BooleanField(default=False)
    always_open_in_browser = BooleanField(default=False)

    @staticmethod
    def all(database):
        return Feed.view(database, CouchDb.feeds())

    @staticmethod
    def create(url, title=None):
        feed = Feed()
        feed.rss_url = url
        feed.title = title
        return feed

    def needsUpdate(self):
        delta = datetime.now() - self.next_update
        return delta.total_seconds() > self._updateIntervalInSeconds()

    def incrementNextUpdateDate(self):
        updateInterval = self._updateIntervalInSeconds()
        delta = timedelta(seconds=updateInterval)
        self.next_update = datetime.now() + delta

    def _updateIntervalInSeconds(self):
        return self.update_interval * 60