diff --git a/incorporealcms/__init__.py b/incorporealcms/__init__.py index 6d87421..8e314b9 100644 --- a/incorporealcms/__init__.py +++ b/incorporealcms/__init__.py @@ -40,8 +40,9 @@ def create_app(instance_path=None, test_config=None): logger.info("RESPONSE: %s %s: %s", request.method, request.path, response.status) return response - from . import error_pages, pages + from . import error_pages, pages, static app.register_blueprint(pages.bp) + app.register_blueprint(static.bp) app.register_error_handler(400, error_pages.bad_request) app.register_error_handler(404, error_pages.page_not_found) app.register_error_handler(500, error_pages.internal_server_error) diff --git a/incorporealcms/static.py b/incorporealcms/static.py new file mode 100644 index 0000000..f7fa083 --- /dev/null +++ b/incorporealcms/static.py @@ -0,0 +1,14 @@ +"""Serve static files from the instance directory.""" +import os + +from flask import Blueprint +from flask import current_app as app +from flask import send_from_directory + +bp = Blueprint('static', __name__, url_prefix='/custom-static') + + +@bp.route('/') +def serve_instance_static_file(name): + """Serve a static file from the instance directory, used for customization.""" + return send_from_directory(os.path.join(app.instance_path, 'custom-static'), name) diff --git a/tests/functional_tests.py b/tests/functional_tests.py index eb7fb18..9cbb751 100644 --- a/tests/functional_tests.py +++ b/tests/functional_tests.py @@ -218,3 +218,23 @@ def test_extra_footer_per_page(client): assert b'