All checks were successful
Build and push container image / build-and-push-image (push) Successful in 6m3s
54 lines
1.9 KiB
Python
54 lines
1.9 KiB
Python
# 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('/<path:filename>')
|
|
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") |