serve per-instance static files at custom-static/
This commit is contained in:
parent
e9af2de21e
commit
715bc38d78
@ -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)
|
logger.info("RESPONSE: %s %s: %s", request.method, request.path, response.status)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
from . import error_pages, pages
|
from . import error_pages, pages, static
|
||||||
app.register_blueprint(pages.bp)
|
app.register_blueprint(pages.bp)
|
||||||
|
app.register_blueprint(static.bp)
|
||||||
app.register_error_handler(400, error_pages.bad_request)
|
app.register_error_handler(400, error_pages.bad_request)
|
||||||
app.register_error_handler(404, error_pages.page_not_found)
|
app.register_error_handler(404, error_pages.page_not_found)
|
||||||
app.register_error_handler(500, error_pages.internal_server_error)
|
app.register_error_handler(500, error_pages.internal_server_error)
|
||||||
|
14
incorporealcms/static.py
Normal file
14
incorporealcms/static.py
Normal file
@ -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('/<path:name>')
|
||||||
|
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)
|
@ -218,3 +218,23 @@ def test_extra_footer_per_page(client):
|
|||||||
assert b'<div class="extra-footer">' not in response.data
|
assert b'<div class="extra-footer">' not in response.data
|
||||||
response = client.get('/index-but-with-footer')
|
response = client.get('/index-but-with-footer')
|
||||||
assert b'<div class="extra-footer"><i>ooo <a href="a">a</a></i>' in response.data
|
assert b'<div class="extra-footer"><i>ooo <a href="a">a</a></i>' in response.data
|
||||||
|
|
||||||
|
|
||||||
|
def test_serving_static_files(client):
|
||||||
|
"""Test the usage of send_from_directory to serve extra static files."""
|
||||||
|
response = client.get('/custom-static/css/warm.css')
|
||||||
|
assert response.status_code == 200
|
||||||
|
|
||||||
|
# can't serve directories, just files
|
||||||
|
response = client.get('/custom-static/')
|
||||||
|
assert response.status_code == 404
|
||||||
|
response = client.get('/custom-static/css/')
|
||||||
|
assert response.status_code == 404
|
||||||
|
response = client.get('/custom-static/css')
|
||||||
|
assert response.status_code == 404
|
||||||
|
|
||||||
|
# can't serve files that don't exist or bad paths
|
||||||
|
response = client.get('/custom-static/css/cold.css')
|
||||||
|
assert response.status_code == 404
|
||||||
|
response = client.get('/custom-static/css/../../unreachable.md')
|
||||||
|
assert response.status_code == 404
|
||||||
|
3
tests/instance/custom-static/css/warm.css
Normal file
3
tests/instance/custom-static/css/warm.css
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
* {
|
||||||
|
color: red;
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user