示例#1
0
    def test_converts_each_entry_to_blogger_post_objects(self):
        new_posts = models.sync_blog_feed(feedparser.parse(self.raw_feed))
        self.assertEqual(2, new_posts)

        # todo: test updated and published times... they're returned as a time struct
        post_one = models.BloggerPost.objects.get(post_id=self.post_id_one)
        self.assertEqual("tag:blogger.com,1999:blog-11111111", post_one.post_id)
        self.assertEqual("Post One", post_one.title)
        self.assertEqual("Aaron Madison", post_one.author)
        # in python3 feedparser is returning an img tag that closes </img>
        # django's assertHTMLEqual says that isn't valid, so changing the assertion
        self.assertIn("<h1>This is Post One</h1>", post_one.content)
        self.assertEqual("html", post_one.content_type)
        #        self.assertEqual(datetime.datetime(2011,7,24,13,15,30), post_one.published)
        #        self.assertEqual(datetime.datetime(2011,7,24,13,15,30), post_one.updated)
        self.assertEqual("example.com/edit/1", post_one.link_edit)
        self.assertEqual("example.com/self/1", post_one.link_self)
        self.assertEqual("example.com/alternate/1", post_one.link_alternate)
        self.assertEqual("http://one-image.jpg", post_one.first_image_url)

        post_two = models.BloggerPost.objects.get(post_id=self.post_id_two)
        self.assertEqual("tag:blogger.com,1999:blog-22222222", post_two.post_id)
        self.assertEqual("Post Two", post_two.title)
        self.assertEqual("Aaron Madison", post_two.author)
        self.assertIn("<h1>This is Post Two</h1>", post_two.content)
        self.assertEqual("html", post_two.content_type)
        #        self.assertEqual(datetime.datetime(2011,7,24,13,15,30), post_two.published)
        #        self.assertEqual(datetime.datetime(2011,7,24,13,15,30), post_two.updated)
        self.assertEqual("example.com/edit/2", post_two.link_edit)
        self.assertEqual("example.com/self/2", post_two.link_self)
        self.assertEqual("example.com/alternate/2", post_two.link_alternate)
        self.assertEqual("", post_two.first_image_url)
示例#2
0
    def post(self, request, *args, **kwargs):
        """
        Handles Feed update from hub server. Updates when necessary
        and ignores bad requests.
        """
        feed = feedparser.parse(request.body)

        feed_links = models.get_all_feed_links(feed.feed.links)
        subscription = models.HubbubSubscription.get_by_url_list(feed_links)
        if subscription:
            models.sync_blog_feed(feedparser.parse(request.body))
        else:
            feed_url = models.get_feed_link(feed.feed.links, 'self')
            logging.warn("Discarding unknown feed: %s", feed_url)

        return http.HttpResponse(status=204)
示例#3
0
    def test_converts_each_entry_to_blogger_post_objects(self):
        new_posts = models.sync_blog_feed(feedparser.parse(self.raw_feed))
        self.assertEqual(2, new_posts)

        #todo: test updated and published times... they're returned as a time struct
        post_one = models.BloggerPost.objects.get(post_id=self.post_id_one)
        self.assertEqual("tag:blogger.com,1999:blog-11111111", post_one.post_id)
        self.assertEqual("Post One", post_one.title)
        self.assertEqual("Aaron Madison", post_one.author)
        self.assertHTMLEqual("""<h1>This is Post One</h1>
                    <img src="http://one-image.jpg" />
                    <p>and some content</p><img src="http://another-one-image.png" />""", post_one.content)
        self.assertEqual("html", post_one.content_type)
#        self.assertEqual(datetime.datetime(2011,7,24,13,15,30), post_one.published)
#        self.assertEqual(datetime.datetime(2011,7,24,13,15,30), post_one.updated)
        self.assertEqual("example.com/edit/1", post_one.link_edit)
        self.assertEqual("example.com/self/1", post_one.link_self)
        self.assertEqual("example.com/alternate/1", post_one.link_alternate)
        self.assertEqual("http://one-image.jpg", post_one.first_image_url)

        post_two = models.BloggerPost.objects.get(post_id=self.post_id_two)
        self.assertEqual("tag:blogger.com,1999:blog-22222222", post_two.post_id)
        self.assertEqual("Post Two", post_two.title)
        self.assertEqual("Aaron Madison", post_two.author)
        self.assertHTMLEqual("""<h1>This is Post Two</h1>
                    <p>and some content</p>""", post_two.content)
        self.assertEqual("html", post_two.content_type)
#        self.assertEqual(datetime.datetime(2011,7,24,13,15,30), post_two.published)
#        self.assertEqual(datetime.datetime(2011,7,24,13,15,30), post_two.updated)
        self.assertEqual("example.com/edit/2", post_two.link_edit)
        self.assertEqual("example.com/self/2", post_two.link_self)
        self.assertEqual("example.com/alternate/2", post_two.link_alternate)
        self.assertEqual("", post_two.first_image_url)
示例#4
0
    def test_sync_blog_feed_updates_entries_when_they_already_exist(self):
        models.BloggerPost.objects.create(
            post_id=self.post_id_one,
            title="Old Title",
            published=datetime.datetime.now(),
            updated=datetime.datetime.now(),
            content="Old Post Content",
        )

        self.assertEqual(1, models.BloggerPost.objects.all().count())  # start with one post
        new_posts = models.sync_blog_feed(feedparser.parse(self.raw_feed))

        self.assertEqual(1, new_posts)
        self.assertEqual(2, models.BloggerPost.objects.all().count())  # only_added_one
        updated_post = models.BloggerPost.objects.get(post_id=self.post_id_one)
        self.assertEqual("Post One", updated_post.title)
        self.assertIn("<h1>This is Post One</h1>", updated_post.content)
示例#5
0
    def test_sync_blog_feed_updates_entries_when_they_already_exist(self):
        models.BloggerPost.objects.create(
            post_id=self.post_id_one,
            title="Old Title",
            published=datetime.datetime.now(),
            updated=datetime.datetime.now(),
            content="Old Post Content",
        )

        self.assertEqual(1, models.BloggerPost.objects.all().count()) # start with one post
        new_posts = models.sync_blog_feed(feedparser.parse(self.raw_feed))

        self.assertEqual(1, new_posts)
        self.assertEqual(2, models.BloggerPost.objects.all().count()) # only_added_one
        updated_post = models.BloggerPost.objects.get(post_id=self.post_id_one)
        self.assertEqual("Post One", updated_post.title)
        self.assertHTMLEqual("""<h1>This is Post One</h1>
                    <img src="http://one-image.jpg" />
                    <p>and some content</p><img src="http://another-one-image.png" />""", updated_post.content)
示例#6
0
def sync_subscriptions(modeladmin, request, queryset):
    new_posts = 0
    for obj in queryset:
        new_posts += sync_blog_feed(feedparser.parse(obj.topic_url))
    messages.success(request, "Synced {0} new posts successfully.".format(new_posts))
示例#7
0
 def handle(self, *args, **options):
     feed = feedparser.parse(config.blogger_feed_url)
     new_posts = sync_blog_feed(feed)
     sys.stdout.write('Synced %d new posts\n' % new_posts)