# Imports from flask import Blueprint, render_template, abort from os import getenv as env import logging, os, re, markdown # Create blueprint bp = Blueprint( 'dynamic_routes', __name__, template_folder=env('TEMPLATE_FOLDER', default='../templates'), static_folder=env('STATIC_FOLDER', default='../static') ) # Create logger log = logging.getLogger(__name__) # Get all files in folder def ListFiles(path): path = os.path.join(bp.template_folder, 'pages', path)[3:] files = [] for root, dirs, files_in_dir in os.walk(path): for file in files_in_dir: files.append(os.path.relpath(os.path.join(root, file), path)) for dir in dirs: files.append(os.path.relpath(os.path.join(root, dir), path) + '/') return files # Catch-all route for generic pages @bp.route('/') def catch_all(filename): if os.path.exists(os.path.join(bp.template_folder, 'pages', filename)[3:]): return render_template(f'pages/{filename}') elif os.path.exists(os.path.join(bp.template_folder, 'pages', filename + '.html')[3:]): return render_template(f'pages/{filename}.html') elif os.path.exists(os.path.join(bp.template_folder, 'pages', filename + '.md')[3:]): print("yay") print(markdown.markdownFromFile("../templates/pages/test.md")) return render_template( f'bases/md.html', title = filename.split("/")[-1], markdown = markdown.markdownFromFile(os.path.join(bp.template_folder, 'pages', filename + '.md')) ) elif os.path.isdir(os.path.join(bp.template_folder, 'pages', filename)[3:]): return render_template( 'bases/directory.html', directory=filename + "/" if not filename.endswith('/') else filename, pages=ListFiles(filename) ) else: abort(404, f"'{filename}' not found")