Allow per blueprint json encoder decoder

re #1710
This commit is contained in:
RamiC 2016-06-08 12:03:26 +03:00
parent 4f83f705e7
commit 501b8590dd
3 changed files with 48 additions and 4 deletions

View file

@ -94,7 +94,8 @@ class JSONDecoder(_json.JSONDecoder):
def _dump_arg_defaults(kwargs):
"""Inject default arguments for dump functions."""
if current_app:
kwargs.setdefault('cls', current_app.json_encoder)
bp = current_app.blueprints.get(request.blueprint, None)
kwargs.setdefault('cls', bp.json_encoder if bp else current_app.json_encoder)
if not current_app.config['JSON_AS_ASCII']:
kwargs.setdefault('ensure_ascii', False)
kwargs.setdefault('sort_keys', current_app.config['JSON_SORT_KEYS'])
@ -106,7 +107,8 @@ def _dump_arg_defaults(kwargs):
def _load_arg_defaults(kwargs):
"""Inject default arguments for load functions."""
if current_app:
kwargs.setdefault('cls', current_app.json_decoder)
bp = current_app.blueprints.get(request.blueprint, None)
kwargs.setdefault('cls', bp.json_decoder if bp else current_app.json_decoder)
else:
kwargs.setdefault('cls', JSONDecoder)