From 47a0f07d18d3137a06ac9cd19f95be290fd7f276 Mon Sep 17 00:00:00 2001 From: Yuval Adam Date: Tue, 24 Dec 2013 17:15:23 +0200 Subject: Duplicate images not solved yet --- newsdiff/core/parsers/haaretz.py | 10 +++++++--- newsdiff/core/tests/tests.py | 9 +++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/newsdiff/core/parsers/haaretz.py b/newsdiff/core/parsers/haaretz.py index e564436..360cf25 100644 --- a/newsdiff/core/parsers/haaretz.py +++ b/newsdiff/core/parsers/haaretz.py @@ -61,9 +61,13 @@ class HaaretzParser(HtmlSoupParser): caption = img.title name, image_file = get_image_from_url(img_url) - article_image = self.IMAGE_MODEL(article=article, origin_url=img_url, caption=caption) - article_image.image.save(name, image_file) - article_image.save() + + article_image, created = self.IMAGE_MODEL.objects.get_or_create(article=article, + origin_url=img_url, defaults={'caption': caption}) + + if created: + article_image.image.save(name, image_file) + article_image.save() def clean_article_href(self, href): href = href.replace('.premium-', '').split('#')[0] diff --git a/newsdiff/core/tests/tests.py b/newsdiff/core/tests/tests.py index 834c3ca..6f91aad 100644 --- a/newsdiff/core/tests/tests.py +++ b/newsdiff/core/tests/tests.py @@ -32,3 +32,12 @@ class HaaretzParsingTestCase(TestCase): self.assertEqual(article.url, 'http://www.haaretz.co.il/{}'.format(article_id)) images = article.images self.assertEqual(images.count(), 2) + + def test_duplicate_article(self): + article_id = '1.2198200' + soup = self._get_soup('{}.html'.format(article_id)) + self.parser.parse_article(article_id, soup) + article = HaaretzArticle.objects.all() + self.assertEqual(article.count(), 1) + images = HaaretzImage.objects.all() + self.assertEqual(images.count(), 2) -- cgit v1.3.1