def refresh_all(verbose=True): """ Refresh all feeds in the system. """ importer = FeedImporter() for feed_obj in importer.feed_model.objects.all(): sys.stderr.write(">>> Refreshing feed %s...\n" % \ (feed_obj.name)) feed_obj = importer.update_feed(feed_obj) if verbose: print_feed_summary(feed_obj)
def test_update_feed_error_status(self): class _Verify(FeedImporter): def parse_feed(self, *args, **kwargs): return {"status": http.NOT_FOUND} Feed.objects.all().delete() importer = FeedImporter(update_on_import=False) feed_obj = importer.import_feed(self.feed, local=True, force=True) feed_obj = _Verify().update_feed(feed_obj=feed_obj, force=True) self.assertEqual(feed_obj.last_error, models.FEED_NOT_FOUND_ERROR)
def test_update_feed_not_modified(self): class _Verify(FeedImporter): def parse_feed(self, *args, **kwargs): feed = super(_Verify, self).parse_feed(*args, **kwargs) feed["status"] = http.NOT_MODIFIED return feed Feed.objects.all().delete() importer = FeedImporter(update_on_import=False) feed_obj = importer.import_feed(self.feed, local=True, force=True) self.assertTrue(_Verify().update_feed(feed_obj=feed_obj, force=False))
def test_import_categories(self): if not Feed.supports_categories: return Feed.objects.all().delete() importer = FeedImporter(include_categories=True) feed = importer.import_feed(self.feed, local=True, force=True) post = feed.post_set.order_by("-date_published")[0] categories = [cat.name for cat in post.categories.all()] for should in ("Downloads", "Screenshots", "Skins", "Themes"): self.assertIn(should, categories) self.assertEqual(len(categories), 13)
def test_update_feed_parse_feed_raises(self): class _RaisingFeedImporter(FeedImporter): def parse_feed(self, *args, **kwargs): raise KeyError("foo") Feed.objects.all().delete() importer = FeedImporter(update_on_import=False) feed_obj = importer.import_feed(self.feed, local=True, force=True) simporter = _RaisingFeedImporter() feed_obj = simporter.update_feed(feed_obj=feed_obj, force=True) self.assertEqual(feed_obj.last_error, models.FEED_GENERIC_ERROR)
def test_update_feed_socket_timeout(self): class _TimeoutFeedImporter(FeedImporter): def parse_feed(self, *args, **kwargs): raise socket.timeout(1) Feed.objects.all().delete() importer = FeedImporter(update_on_import=False) feed_obj = importer.import_feed(self.feed, local=True, force=True) simporter = _TimeoutFeedImporter() feed_obj = simporter.update_feed(feed_obj=feed_obj, force=True) self.assertEqual(feed_obj.last_error, models.FEED_TIMEDOUT_ERROR)
def setUp(self): self.feed = get_data_filename("example_feed.rss") self.empty_feed = get_data_filename("example_empty_feed.rss") self.feed_content_encoded = get_data_filename( "example_feed-content_encoded.rss") self.importer = FeedImporter()
def test_entry_limit(self): feed = self.feed importer = FeedImporter(post_limit=10) feed_obj = importer.import_feed(feed, local=True) self.assertEqual(feed_obj.name, "Lifehacker", "feed title is set") self.assertEqual(feed_obj.get_post_count(), 10, "feed has 10 items")
def setUp(self): self.importer = FeedImporter() self.feeds = map(get_data_filename, ["t%d.xml" % i for i in reversed(range(1, 6))])