diff --git a/district/jekyll_import.py b/district/jekyll_import.py index 4034cf7b0f1cef92f97bcb6df945a38ff660c79f..7d9fbaa11b2337d9e6b7c431b43d72d667e7e170 100644 --- a/district/jekyll_import.py +++ b/district/jekyll_import.py @@ -58,6 +58,7 @@ class ImgProcessor(InlineProcessor): el.attrib["alt"] = m.group(1) el.attrib["format"] = "left" collection = get_collection() + # TODO FIX REPO_NAME image_obj = get_or_create_image( params["path"], m.group(2), collection=collection, repo_name="" ) @@ -198,8 +199,8 @@ def get_or_create_image(path, file_path, collection, repo_name) -> Image or None except FileNotFoundError: img_name = file_path.split("/")[-1] img_assets_folder = repo_name.split(".")[0] # TODO make as form field - img_url = "https://a.pirati.cz/{}/img/posts/{}".format( - img_assets_folder, img_name + img_url = "https://a.pirati.cz/{}/img/{}".format( + img_assets_folder, file_path ) img_path = os.path.join(path, img_name) try: @@ -290,45 +291,36 @@ def perform_import( articlepath = site_config.get("articlepath", "aktuality") for fn in os.listdir(os.path.join(path, POSTS_DIR)): - fname = os.path.join(POSTS_DIR, fn) - match = re.match(r"(\d*)-(\d*)-(\d*)-(.*)\.(.*)", fn) - if match: - y = match.group(1) - m = match.group(2) - d = match.group(3) - slug = match.group(4) - ext = match.group(5) - - if ext == "md": - article, success = import_post( - path, fname, article_parent_page, title_suffix, dry_run, repo_name + if os.path.isdir(os.path.join(path, POSTS_DIR, fn)): + posts_sub_folder = os.path.join(path, POSTS_DIR, fn) + for sub_fn in os.listdir(posts_sub_folder): + file_path = os.path.join(posts_sub_folder, sub_fn) + success_counter = article_parser( + articlepath, + path, + sub_fn, + file_path, + article_parent_page, + title_suffix, + dry_run, + repo_name, + success_counter, + site, ) - - if not success: - continue - - if dry_run: - success_counter += 1 - continue - - Redirect.objects.get_or_create( - site=site, - old_path="/%s/%s/%s/%s/%s" - % (articlepath, y, m.zfill(2), d.zfill(2), slug), - defaults={"is_permanent": True, "redirect_page": article}, - ) - - success_counter += 1 - else: - msg = "ERROR: Nepodporovaná přípona souboru: %s" % ext - message_list.append({"level": ERROR, "text": msg}) - stdout.write(msg) else: - msg = "Skipped: %s" % fn - stdout.write(msg) - - if dry_run: - message_list.append({"level": WARNING, "text": msg}) + file_path = os.path.join(POSTS_DIR, fn) + success_counter = article_parser( + articlepath, + path, + fn, + file_path, + article_parent_page, + title_suffix, + dry_run, + repo_name, + success_counter, + site, + ) if success_counter: base_msg = "Lze importovat" if dry_run else "Úspěšně naimportováno" @@ -337,3 +329,55 @@ def perform_import( ) return message_list + + +def article_parser( + articlepath: str, + path: str, + fn, + file_path, + article_parent_page, + title_suffix, + dry_run, + repo_name, + success_counter, + site, +): + match = re.match(r"(\d*)-(\d*)-(\d*)-(.*)\.(.*)", fn) + if match: + y = match.group(1) + m = match.group(2) + d = match.group(3) + slug = match.group(4) + ext = match.group(5) + + if ext == "md": + article, success = import_post( + path, file_path, article_parent_page, title_suffix, dry_run, repo_name + ) + + if not success: + return success_counter + + if dry_run: + return success_counter + 1 + + Redirect.objects.get_or_create( + site=site, + old_path="/%s/%s/%s/%s/%s" + % (articlepath, y, m.zfill(2), d.zfill(2), slug), + defaults={"is_permanent": True, "redirect_page": article}, + ) + + success_counter += 1 + else: + msg = "ERROR: Nepodporovaná přípona souboru: %s" % ext + message_list.append({"level": ERROR, "text": msg}) + stdout.write(msg) + else: + msg = "Skipped: %s" % fn + stdout.write(msg) + + if dry_run: + message_list.append({"level": WARNING, "text": msg}) + return success_counter