Reviewed-by: Daniel Barboza <danielhb(a)linux.vnet.ibm.com>
On 06/09/2014 07:09 AM, shaohef(a)linux.vnet.ibm.com wrote:
From: ShaoHe Feng <shaohef(a)linux.vnet.ibm.com>
when the request are json files, set the Content-Type as
application/json.
Signed-off-by: Adam King <rak(a)linux.vnet.ibm.com>
Signed-off-by: ShaoHe Feng <shaohef(a)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)
@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)