# HG changeset patch # User Marcin Kuzminski # Date 2017-04-19 12:27:17 # Node ID 0db868e6a8513ac4b8f4cb6ee09d568c9bbe87b4 # Parent 4edb658a02f9ebfa49e9b819adebc950858b31af core: added ext_json as custom renderer using our ext_json lib for pyramid. diff --git a/rhodecode/config/middleware.py b/rhodecode/config/middleware.py --- a/rhodecode/config/middleware.py +++ b/rhodecode/config/middleware.py @@ -315,6 +315,10 @@ def includeme(config): # Set the default renderer for HTML templates to mako. config.add_mako_renderer('.html') + config.add_renderer( + name='json_ext', + factory='rhodecode.lib.ext_json_renderer.pyramid_ext_json') + # include RhodeCode plugins includes = aslist(settings.get('rhodecode.includes', [])) for inc in includes: diff --git a/rhodecode/lib/ext_json_renderer.py b/rhodecode/lib/ext_json_renderer.py new file mode 100644 --- /dev/null +++ b/rhodecode/lib/ext_json_renderer.py @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- + +# Copyright (C) 2010-2017 RhodeCode GmbH +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License, version 3 +# (only), as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +# This program is dual-licensed. If you wish to learn more about the +# RhodeCode Enterprise Edition, including its added features, Support services, +# and proprietary license terms, please see https://rhodecode.com/licenses/ + +from rhodecode.lib.ext_json import json + + +def pyramid_ext_json(info): + """ + Custom json renderer for pyramid to use our ext_json lib + """ + def _render(value, system): + request = system.get('request') + if request is not None: + response = request.response + ct = response.content_type + if ct == response.default_content_type: + response.content_type = 'application/json' + return json.dumps(value) + + return _render