Skip to content

Commit

Permalink
Initialize JinjaOptions right after app creation.
Browse files Browse the repository at this point in the history
Starting from Flask>=1.0, some of plain `app` properties were
rewritten as property descriptors, so setting them may accidentialy
initialize JinjaEnvironment. After this point jinja2 won't notice
any change to `jinja_options`. So I reordered assignment in app
initialization and now `jinja_options` added firstly.
  • Loading branch information
smotornyuk committed Aug 28, 2019
1 parent 977fe00 commit 25f7175
Showing 1 changed file with 9 additions and 0 deletions.
9 changes: 9 additions & 0 deletions ckan/config/middleware/flask_app.py
Expand Up @@ -82,6 +82,15 @@ def make_flask_stack(conf, **app_conf):
debug = asbool(conf.get('debug', conf.get('DEBUG', False)))
testing = asbool(app_conf.get('testing', app_conf.get('TESTING', False)))
app = flask_app = CKANFlask(__name__)
# Set jinja_options as soon as possible as it won't affect
# tempaltes in any way after JinjaEnvironment created. It may be
# not obvious, but some of `app` properties are implemented as
# property descriptors, so even assigning can implicitly create
# JinjaEnvironment.
#
# https://flask.palletsprojects.com/en/1.1.x/api/#flask.Flask.jinja_options
app.jinja_options = jinja_extensions.get_jinja_env_options()

app.debug = debug
app.testing = testing
app.template_folder = os.path.join(root, 'templates')
Expand Down

0 comments on commit 25f7175

Please sign in to comment.