diff --git a/acros/models/WikipediaImage.py b/acros/models/WikipediaImage.py index 345e632..ca8dd19 100644 --- a/acros/models/WikipediaImage.py +++ b/acros/models/WikipediaImage.py @@ -4,7 +4,7 @@ import requests from django.core.files import File from django.db import models -from acros.utils.apis import WikipediaImageAPIObject +from acros.utils.apis import WikipediaImageAPIObject, NotFoundError class WikipediaImage(models.Model): @@ -25,7 +25,10 @@ class WikipediaImage(models.Model): timestamp = models.DateTimeField(blank=True, editable=False) def save(self, *args, **kwargs): - img = WikipediaImageAPIObject(self.filename) + try: + img = WikipediaImageAPIObject(self.filename) + except NotFoundError: + return if self.thumbnail: self.thumbnail.delete(save=False) print("saving") diff --git a/acros/utils/apis.py b/acros/utils/apis.py index fe05c9f..2e9b377 100644 --- a/acros/utils/apis.py +++ b/acros/utils/apis.py @@ -6,6 +6,11 @@ from bs4 import BeautifulSoup from acros.utils.html import clean_html, string_to_bool +class NotFoundError(FileNotFoundError): + """Request could not be found in API""" + pass + + class WikipediaAPISummary: urlbase = "https://en.wikipedia.org/api/rest_v1/page/summary/" @@ -57,6 +62,8 @@ class WikipediaImageAPIObject: r.raise_for_status() self.data = r.json() self.image_obj = list(self.data["query"]["pages"].values())[0] + if "imageinfo" not in self.image_obj: + raise NotFoundError() @classmethod def from_url(cls, url: str):