[Kimchi-devel] [PATCH V5 2/7] Update root.py to make Cheetah render the JSON template.
Aline Manera
alinefm at linux.vnet.ibm.com
Mon Jun 9 19:23:58 UTC 2014
On 06/09/2014 07:09 AM, shaohef at linux.vnet.ibm.com wrote:
> From: ShaoHe Feng <shaohef at linux.vnet.ibm.com>
>
> when the request are json files, set the Content-Type as
> application/json.
>
> Signed-off-by: Adam King <rak at linux.vnet.ibm.com>
> Signed-off-by: ShaoHe Feng <shaohef at linux.vnet.ibm.com>
> ---
> src/kimchi/root.py | 5 +++++
> src/kimchi/template.py | 34 +++++++++++++++++++---------------
> 2 files changed, 24 insertions(+), 15 deletions(-)
>
> diff --git a/src/kimchi/root.py b/src/kimchi/root.py
> index 8b1d09b..1cebfd1 100644
> --- a/src/kimchi/root.py
> +++ b/src/kimchi/root.py
> @@ -82,6 +82,11 @@ def get(self):
> def default(self, page, **kwargs):
> if page.endswith('.html'):
> return template.render(page, None)
> + if page.endswith('.json'):
> + cherrypy.response.headers['Content-Type'] = \
> + 'application/json;charset=utf-8'
> + context = template.render_cheetah_file(page, None)
> + return context.encode("utf-8")
> raise cherrypy.HTTPError(404)
Why is it needed for the plugins as kimchi does not make use of it?
> @cherrypy.expose
> diff --git a/src/kimchi/template.py b/src/kimchi/template.py
> index 60cd818..146e735 100644
> --- a/src/kimchi/template.py
> +++ b/src/kimchi/template.py
> @@ -82,26 +82,30 @@ def can_accept_html():
> can_accept('*/*')
>
>
> +def render_cheetah_file(resource, data):
> + paths = cherrypy.request.app.root.paths
> + filename = paths.get_template_path(resource)
> + try:
> + params = {'data': data}
> + lang = validate_language(get_lang())
> + gettext_conf = {'domain': 'kimchi',
> + 'localedir': paths.mo_dir,
> + 'lang': [lang]}
> + params['lang'] = gettext_conf
> + return Template(file=filename, searchList=params).respond()
> + except OSError, e:
> + if e.errno == errno.ENOENT:
> + raise cherrypy.HTTPError(404)
> + else:
> + raise
> +
> +
> def render(resource, data):
> if can_accept('application/json'):
> cherrypy.response.headers['Content-Type'] = \
> 'application/json;charset=utf-8'
> return json.dumps(data, indent=2, separators=(',', ':'))
> elif can_accept_html():
> - paths = cherrypy.request.app.root.paths
> - filename = paths.get_template_path(resource)
> - try:
> - params = {'data': data}
> - lang = validate_language(get_lang())
> - gettext_conf = {'domain': 'kimchi',
> - 'localedir': paths.mo_dir,
> - 'lang': [lang]}
> - params['lang'] = gettext_conf
> - return Template(file=filename, searchList=params).respond()
> - except OSError, e:
> - if e.errno == errno.ENOENT:
> - raise cherrypy.HTTPError(404)
> - else:
> - raise
> + return render_cheetah_file(resource, data)
> else:
> raise cherrypy.HTTPError(406)
More information about the Kimchi-devel
mailing list