summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--newsdiff/core/parsers/haaretz.py10
-rw-r--r--newsdiff/core/tests/tests.py9
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)