Esempio n. 1
0
    def add_site(self, feedurl, mark_as_read=False):
        """
        Adds a new site.
        'feedurl' is the feed's url.
        If 'mark_as_read' is True, then old entries will be ignored in next
        update. Only new entries from now will be indexed.
        Returns feed's title if everything it's ok, otherwise, None.
        """
        # Check valid url
        if not url_re.search(feedurl):
            s = "Site: '%s' is not a valid url!" % (feedurl)
            self.logger.info(s)
            raise ValueError(s)

        # Check if site already exists in DB, and if it doesn't, a new Site
        # instance is created and saved.
        if not self.session.query(Site, Feed).filter(Site.id == Feed.siteid).filter(Feed.url == feedurl).first():
            fm = FeedManager()
            result = fm.check_feed(feedurl, True)
            if result:
                site = Site(feedurl, result[0], result[1])
                if mark_as_read:
                    FeedManager.mark_as_read(site.feed)
                self.session.save(site)
                self.session.commit()
                self.sites.append(site)
                return result[0]