From 189a79c3d46d3fa058918cf5ee1355f2896bb493 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Tue, 5 Nov 2013 18:53:43 +0530 Subject: [PATCH] [minor] mimetype fix in render page --- webnotes/webutils.py | 22 ++++++++++++------- .../style_settings/templates/pages/wn_web.py | 2 -- .../website_script/templates/pages/wn_web.py | 1 - website/templates/pages/rss.py | 2 -- website/templates/pages/sitemap.py | 2 -- 5 files changed, 14 insertions(+), 15 deletions(-) diff --git a/webnotes/webutils.py b/webnotes/webutils.py index 0722ee2b7c..d8e730a8b1 100644 --- a/webnotes/webutils.py +++ b/webnotes/webutils.py @@ -8,6 +8,7 @@ import webnotes import json from webnotes import _ import webnotes.utils +import mimetypes class PageNotFoundError(Exception): pass @@ -18,20 +19,18 @@ def render(page_name): except PageNotFoundError: html = render_page("404") except Exception: - html = render_page('error') + html = render_page("error") - webnotes._response.headers["Content-Type"] = "text/html; charset: utf-8" - if "content_type" in webnotes.response: - webnotes._response.headers["Content-Type"] = webnotes.response.pop("content_type") - webnotes._response.data = html - + def render_page(page_name): """get page html""" + set_content_type(page_name) + page_name = scrub_page_name(page_name) html = '' - if not ('auto_cache_clear') and conf.auto_cache_clear or 0 in conf: + if not conf.auto_cache_clear: html = webnotes.cache().get_value("page:" + page_name) from_cache = True @@ -44,12 +43,19 @@ def render_page(page_name): if page_name=="error": html = html.replace("%(error)s", webnotes.getTraceback()) - elif not webnotes.response.content_type: + elif "text/html" in webnotes._response.headers["Content-Type"]: comments = "\npage:"+page_name+\ "\nload status: " + (from_cache and "cache" or "fresh") html += """\n""" % webnotes.utils.cstr(comments) return html + +def set_content_type(page_name): + webnotes._response.headers["Content-Type"] = "text/html; charset: utf-8" + + if "." in page_name and not page_name.endswith(".html"): + content_type, encoding = mimetypes.guess_type(page_name) + webnotes._response.headers["Content-Type"] = content_type def build_page(page_name): if not webnotes.conn: diff --git a/website/doctype/style_settings/templates/pages/wn_web.py b/website/doctype/style_settings/templates/pages/wn_web.py index d789140e7a..051616eaa7 100644 --- a/website/doctype/style_settings/templates/pages/wn_web.py +++ b/website/doctype/style_settings/templates/pages/wn_web.py @@ -9,8 +9,6 @@ def get_context(): """returns web style""" from webnotes.webutils import get_hex_shade - webnotes.response.content_type = "text/css" - doc = webnotes.doc("Style Settings", "Style Settings") prepare(doc) diff --git a/website/doctype/website_script/templates/pages/wn_web.py b/website/doctype/website_script/templates/pages/wn_web.py index d2e70e723b..0dd174f076 100644 --- a/website/doctype/website_script/templates/pages/wn_web.py +++ b/website/doctype/website_script/templates/pages/wn_web.py @@ -8,7 +8,6 @@ no_sitemap = True def get_context(): """returns web startup script""" - webnotes.response.content_type = "application/javascript" return { "javascript": webnotes.conn.get_value('Website Script', None, 'javascript'), "google_analytics_id": webnotes.conn.get_value("Website Settings", "Website Settings", "google_analytics_id") diff --git a/website/templates/pages/rss.py b/website/templates/pages/rss.py index 133861861e..8b39cee272 100644 --- a/website/templates/pages/rss.py +++ b/website/templates/pages/rss.py @@ -33,8 +33,6 @@ def get_context(): 'link': host + '/blog' } - webnotes.response.content_type = "text/xml" - # print context return context \ No newline at end of file diff --git a/website/templates/pages/sitemap.py b/website/templates/pages/sitemap.py index 267b2bea8b..b2f445567c 100644 --- a/website/templates/pages/sitemap.py +++ b/website/templates/pages/sitemap.py @@ -16,8 +16,6 @@ def get_context(): for l in links: l[1]["loc"] = urllib.basejoin(host, urllib.quote(l[1].get("page_name", l[1]["link_name"]).encode("utf-8"))) - webnotes.response.content_type = "text/xml" - return { "links": [l[1] for l in links if not l[1].get("no_sitemap")] }