diff --git a/backend/internals/server.py b/backend/internals/server.py index 7def1e3..9742c6e 100644 --- a/backend/internals/server.py +++ b/backend/internals/server.py @@ -10,7 +10,7 @@ from os import urandom from threading import Timer, current_thread from typing import TYPE_CHECKING, Any, Callable, Iterable, Mapping, Union -from flask import Flask +from flask import Flask, request from waitress.server import create_server from waitress.task import ThreadedTaskDispatcher as TTD from werkzeug.middleware.dispatcher import DispatcherMiddleware @@ -136,7 +136,7 @@ class Server(metaclass=Singleton): """Creates an flask app instance that can be used to start a web server""" from frontend.api import admin_api, api - from frontend.ui import ui + from frontend.ui import render, ui app = Flask( __name__, @@ -153,6 +153,12 @@ class Server(metaclass=Singleton): def bad_request(e): return {'error': "BadRequest", "result": {}}, 400 + @app.errorhandler(404) + def not_found(e): + if request.path.startswith((self.api_prefix, self.admin_prefix)): + return {'error': "NotFound", "result": {}}, 404 + return render("page_not_found.html") + @app.errorhandler(405) def method_not_allowed(e): return {'error': "MethodNotAllowed", "result": {}}, 405 diff --git a/frontend/api.py b/frontend/api.py index 22ca0d1..09610f5 100644 --- a/frontend/api.py +++ b/frontend/api.py @@ -135,14 +135,6 @@ def endpoint_wrapper( return wrapper -# =================== -# region General Handling -# =================== -@api.errorhandler(404) -def api_not_found(e): - return {'error': "NotFound", "result": {}}, 404 - - # =================== # region Auth # =================== diff --git a/frontend/ui.py b/frontend/ui.py index 6c0f150..9cad964 100644 --- a/frontend/ui.py +++ b/frontend/ui.py @@ -1,8 +1,10 @@ # -*- coding: utf-8 -*- +from io import BytesIO +from json import dumps from typing import Any -from flask import Blueprint, render_template +from flask import Blueprint, render_template, send_file from backend.internals.server import Server @@ -15,18 +17,8 @@ def render(filename: str, **kwargs: Any) -> str: return render_template(filename, url_prefix=SERVER.url_prefix, **kwargs) -@ui.errorhandler(404) -def ui_not_found(e): - return render('page_not_found.html') - - @ui.route('/manifest.json', methods=methods) def ui_manifest(): - from io import BytesIO - from json import dumps - - from flask import send_file - return send_file( BytesIO(dumps( {