diff --git a/incorporealcms/__init__.py b/incorporealcms/__init__.py index cf6a7a4..67f07c6 100644 --- a/incorporealcms/__init__.py +++ b/incorporealcms/__init__.py @@ -3,7 +3,7 @@ import logging import os from logging.config import dictConfig -from flask import Flask, request +from flask import Flask, request, send_from_directory from ._version import get_versions @@ -34,6 +34,11 @@ def create_app(instance_path=None, test_config=None): def log_request(): logger.info("REQUEST: [ %s ]", request.path) + @app.route(f'/{app.config["MEDIA_DIR"]}/') + def media_files(filename): + return send_from_directory(os.path.join(app.instance_path, app.config['MEDIA_DIR']), + filename) + from . import pages app.register_blueprint(pages.bp) diff --git a/incorporealcms/config.py b/incorporealcms/config.py index 64d7f13..77542c3 100644 --- a/incorporealcms/config.py +++ b/incorporealcms/config.py @@ -33,3 +33,4 @@ class Config(object): } TITLE_SUFFIX = 'incorporeal.org' + MEDIA_DIR = 'media' diff --git a/tests/instance/media/favicon.png b/tests/instance/media/favicon.png new file mode 100644 index 0000000..25d32c9 Binary files /dev/null and b/tests/instance/media/favicon.png differ diff --git a/tests/test_factory.py b/tests/test_factory.py index 97f728d..2acf780 100644 --- a/tests/test_factory.py +++ b/tests/test_factory.py @@ -21,3 +21,9 @@ def test_title_override(): response = client.get('/no-title') assert response.status_code == 200 assert b'suou.net' in response.data + + +def test_media_file_access(client): + response = client.get('/media/favicon.png') + assert response.status_code == 200 + assert response.headers['content-type'] == 'image/png'