Skip to content
Snippets Groups Projects
Commit 4c293354 authored by OndraRehounek's avatar OndraRehounek
Browse files

district & region: Try to find images in img/posts folder on disk

parent 374b58b6
Branches
No related tags found
2 merge requests!444Release,!443district & region: Try to find images in img/posts folder on disk
Pipeline #7439 passed
......@@ -51,7 +51,12 @@ class JekyllImportForm(WagtailAdminPageForm):
if not cleaned_data.get("do_import"):
return cleaned_data
else:
if cleaned_data.get("do_import") and not self.instance.id:
self.add_error(
"do_import", "Import proveďte prosím až po vytvoření stránky"
)
if not cleaned_data.get("collection"):
self.add_error("collection", "Pro import je toto pole povinné")
if not cleaned_data.get("jekyll_repo_url"):
......
......@@ -51,7 +51,12 @@ class JekyllImportForm(WagtailAdminPageForm):
if not cleaned_data.get("do_import"):
return cleaned_data
else:
if cleaned_data.get("do_import") and not self.instance.id:
self.add_error(
"do_import", "Import proveďte prosím až po vytvoření stránky"
)
if not cleaned_data.get("collection"):
self.add_error("collection", "Pro import je toto pole povinné")
if not cleaned_data.get("jekyll_repo_url"):
......
......@@ -100,7 +100,7 @@ def get_or_create_image(
) -> Image or None:
"""
Funkce, která se snaží najít a vrátit Wagtail Image.
Nejdříve hledá v existujících podle cesty...
Nejdříve hledá v existujících podle cesty, resp. title...
Pak zkusí najít soubor fyzicky na disku...
Pak zkusí ještě assets/img adresář...
Pak zkusí stáhnout image z https://a.pirati.cz...
......@@ -115,13 +115,15 @@ def get_or_create_image(
if Image.objects.filter(title=file_path).exists():
return Image.objects.filter(title=file_path).first(), ""
else:
try:
file = ImageFile(open(os.path.join(path, file_path), "rb"), name=file_path)
image = Image(title=file_path, file=file, collection=collection)
image.save()
return image, ""
except FileNotFoundError:
pass # cesta pomocí file_path neexisuje, jdeme dál
try:
file = ImageFile(
open(os.path.join(path, "assets/img", file_path), "rb"),
......@@ -131,14 +133,27 @@ def get_or_create_image(
image.save()
return image, ""
except FileNotFoundError:
pass # cesta s vložením "assets/img" před file_path neexisuje, jdeme dál
try:
file = ImageFile(
open(os.path.join(path, "assets/img/posts", file_path), "rb"),
name=file_path,
)
image = Image(title=file_path, file=file, collection=collection)
image.save()
return image, ""
except FileNotFoundError:
pass
# ani cesta "assets/img/posts" nefunguje, jdeme zkusit assets server a.pirati.cz
fallback_name = (
"".join(random.choice(string.ascii_lowercase) for _ in range(10))
+ ".jpg"
) # i PNG...?
"".join(random.choice(string.ascii_lowercase) for _ in range(10)) + ".jpg"
) # někdy je název obrzau spojený s poznámkou apod., připravíme si fallback name
img_name = file_path.split("/")[-1] or fallback_name
img_assets_folder = repo_name.split(".")[0]
img_assets_folder = repo_name.split(".")[0] # např. "praha" z praha.pirati.cz
img_url = "https://a.pirati.cz/{}/img/{}".format(
img_assets_folder, file_path.split("#")[0]
img_assets_folder, file_path.split("#")[0] # cistime nazev od poznamek apod
)
img_path = os.path.join(path, img_name)
try:
......@@ -150,14 +165,9 @@ def get_or_create_image(
img_assets_folder, img_name.split()[0]
)
urllib.request.urlretrieve(img_url, img_path)
except (
HTTPError,
UnicodeEncodeError,
InvalidURL,
IsADirectoryError,
):
msg = "Nedohledán obrázek při importu článků"
log_message = "{} - {}\n".format(msg, img_url)
except (HTTPError, UnicodeEncodeError, InvalidURL, IsADirectoryError):
msg = "Nedohledán obrázek při importu článků - ani na disku, ani na URL"
log_message = "{}: cesta {}, URL {}\n".format(msg, file_path, img_url)
logger.warning(
msg,
extra={
......@@ -170,6 +180,7 @@ def get_or_create_image(
file = ImageFile(open(img_path, "rb"), name=img_path)
image = Image(title=file_path, file=file, collection=collection)
try:
image.save()
except Exception as e:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment