diff --git a/zinnia/feeds.py b/zinnia/feeds.py index 32f0347ea..a0f7c4982 100644 --- a/zinnia/feeds.py +++ b/zinnia/feeds.py @@ -127,10 +127,14 @@ def item_enclosure_url(self, item): Return an image for enclosure. """ if item.image: - url = item.image.url + url = item.image.url.replace("https://", "http://") else: img = BeautifulSoup(item.html_content, 'html.parser').find('img') - url = img.get('src') if img else None + if img: + url = img.get('src') + url = url.replace("https://", "http://") if url else None + else: + url = None self.cached_enclosure_url = url return urljoin(self.site_url, url) if url else None diff --git a/zinnia/tests/test_feeds.py b/zinnia/tests/test_feeds.py index 1658f3564..ff0853ccf 100644 --- a/zinnia/tests/test_feeds.py +++ b/zinnia/tests/test_feeds.py @@ -162,6 +162,23 @@ def test_entry_feed_enclosure(self): self.assertEqual(feed.item_enclosure_length(entry), '100000') self.assertEqual(feed.item_enclosure_mime_type(entry), 'image/jpeg') + def test_entry_feed_enclosure_replace_https(self): + entry = self.create_published_entry() + feed = EntryFeed() + entry.content = 'My test content with image in https ' \ + '' + entry.save() + self.assertEqual( + feed.item_enclosure_url(entry), 'http://test.com/image.jpg') + + def test_entry_feed_enclosure_without_image(self): + entry = self.create_published_entry() + feed = EntryFeed() + entry.content = 'My test content without image ' + entry.save() + self.assertEqual( + feed.item_enclosure_url(entry), None) + def test_entry_feed_enclosure_issue_134(self): entry = self.create_published_entry() feed = EntryFeed()