From 6e92e40f1c878310f5aca8308d709e12acb37c55 Mon Sep 17 00:00:00 2001 From: Alfie King Date: Thu, 26 Feb 2026 23:14:36 +0000 Subject: [PATCH] markdown support --- src/routes/dynamic_routes.py | 31 +++++++++++++++---------------- src/routes/error_handlers.py | 6 +++--- templates/bases/md.html | 2 +- templates/pages/test.md | 4 +++- 4 files changed, 22 insertions(+), 21 deletions(-) diff --git a/src/routes/dynamic_routes.py b/src/routes/dynamic_routes.py index d82d3a9..73dbffe 100644 --- a/src/routes/dynamic_routes.py +++ b/src/routes/dynamic_routes.py @@ -1,13 +1,13 @@ # Imports from flask import Blueprint, render_template, abort from os import getenv as env -import logging, os, re, markdown +import logging, os, markdown # Create blueprint bp = Blueprint( 'dynamic_routes', __name__, - template_folder=env('TEMPLATE_FOLDER', default='../templates'), + template_folder=env('TEMPLATE_FOLDER', default='templates'), static_folder=env('STATIC_FOLDER', default='../static') ) @@ -16,7 +16,7 @@ log = logging.getLogger(__name__) # Get all files in folder def ListFiles(path): - path = os.path.join(bp.template_folder, 'pages', path)[3:] + path = os.path.join(bp.template_folder, 'pages', path) files = [] for root, dirs, files_in_dir in os.walk(path): for file in files_in_dir: @@ -28,26 +28,25 @@ def ListFiles(path): # 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:]): + if os.path.exists(os.path.join(bp.template_folder, 'pages', filename)): + if os.path.isdir(os.path.join(bp.template_folder, 'pages', filename)): + return render_template( + 'bases/directory.html', + directory=filename + "/" if not filename.endswith('/') else filename, + pages=ListFiles(filename) + ) + return render_template(f'pages/{filename}') - elif os.path.exists(os.path.join(bp.template_folder, 'pages', filename + '.html')[3:]): + elif os.path.exists(os.path.join(bp.template_folder, 'pages', filename + '.html')): 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")) + elif os.path.exists(os.path.join(bp.template_folder, 'pages', filename + '.md')): + output = markdown.markdown(open(os.path.join(bp.template_folder, 'pages', filename + '.md'), "r").read()) 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) + markdown = output ) else: diff --git a/src/routes/error_handlers.py b/src/routes/error_handlers.py index 683d69b..afa3707 100644 --- a/src/routes/error_handlers.py +++ b/src/routes/error_handlers.py @@ -34,9 +34,9 @@ def bad_request(error:HTTPException=None): return render_template('errors/400.html', error=error), 400 # Route for all other errors -@bp.route('/error') +@bp.route('/idk') @bp.app_errorhandler(Exception) -def unauthorized(error:HTTPException=None): +def nah(error:HTTPException=None): if isinstance(error, HTTPException): return render_template( 'errors/error.html', @@ -47,6 +47,6 @@ def unauthorized(error:HTTPException=None): return render_template( 'errors/error.html', code=418, - description="meow :3", + description="I honestly dont know", name="I'm a teapot" ), 418 \ No newline at end of file diff --git a/templates/bases/md.html b/templates/bases/md.html index 9030e27..5570c9c 100644 --- a/templates/bases/md.html +++ b/templates/bases/md.html @@ -5,6 +5,6 @@ {% block content %}
- {{ markdown }} + {{ markdown|safe }}
{% endblock %} \ No newline at end of file diff --git a/templates/pages/test.md b/templates/pages/test.md index 17e2883..3b838d8 100644 --- a/templates/pages/test.md +++ b/templates/pages/test.md @@ -1,2 +1,4 @@ # hello -this is a test \ No newline at end of file +## this is a test + +this is actually a md file, try putting .md at the end of this path \ No newline at end of file