Example #1
0
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)
Example #2
0
    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)
Example #3
0
    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))
Example #4
0
    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)
Example #5
0
    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)
Example #6
0
    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)
Example #7
0
 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()
Example #8
0
 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")
Example #9
0
 def setUp(self):
     self.importer = FeedImporter()
     self.feeds = map(get_data_filename,
                      ["t%d.xml" % i for i in reversed(range(1, 6))])