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]