import os from typing import Optional from flask import ( jsonify, request, Response, send_from_directory as send_from_directory_, render_template, ) from .app import app from .config import config from ._sorters import PagesSortByTimeGroupedByFolder def send_from_directory( path: str, file: str, alternative_path: Optional[str] = None, *args, **kwargs ): if not os.path.exists(os.path.join(path, file)) and alternative_path: path = alternative_path return send_from_directory_(path, file, *args, **kwargs) @app.route("/", methods=["GET"]) def home_route(): return render_template( "index.html", pages=app.get_pages(sorter=PagesSortByTimeGroupedByFolder), config=config, ) @app.route("/img/", methods=["GET"]) def img_route(img: str): return send_from_directory(app.img_dir, img, config.default_img_dir) @app.route("/favicon.ico", methods=["GET"]) def favicon_route(): return img_route("favicon.ico") @app.route("/js/", methods=["GET"]) def js_route(file: str): return send_from_directory(app.js_dir, file, config.default_js_dir) @app.route("/pwabuilder-sw.js", methods=["GET"]) def pwa_builder_route(): return send_from_directory(app.js_dir, "pwabuilder-sw.js", config.default_js_dir) @app.route("/pwabuilder-sw-register.js", methods=["GET"]) def pwa_builder_register_route(): return send_from_directory( app.js_dir, "pwabuilder-sw-register.js", config.default_js_dir ) @app.route("/css/