# HG changeset patch # User Fabrice # Date 1248769428 -7200 # Node ID ca7b122f34fa1a13b3f0b2ecdd4e50efa13dd164 # Parent 3b6a6d2f9d7e879fecb348420ca403afbde18cb8 fix html headers for forced html content type : main template and json controller diff -r 3b6a6d2f9d7e -r ca7b122f34fa view.py --- a/view.py Tue Jul 28 10:19:14 2009 +0200 +++ b/view.py Tue Jul 28 10:23:48 2009 +0200 @@ -403,7 +403,7 @@ @property def doctype(self): - if self.req.xhtml_browser(): + if not self.config['force-html-content-type'] and self.req.xhtml_browser(): return STRICT_DOCTYPE return STRICT_DOCTYPE_NOEXT diff -r 3b6a6d2f9d7e -r ca7b122f34fa web/views/basecontrollers.py --- a/web/views/basecontrollers.py Tue Jul 28 10:19:14 2009 +0200 +++ b/web/views/basecontrollers.py Tue Jul 28 10:23:48 2009 +0200 @@ -33,15 +33,20 @@ except ImportError: # gae HAS_SEARCH_RESTRICTION = False +def xhtml_wrap_header(self): + # XXX factor out, watch view.py ~ Maintemplate.doctype + if not self.vreg.config['force-html-content-type'] and self.req.xhtml_browser(): + head = (u'\n' + STRICT_DOCTYPE + + u'
') + else: + head = u'
' + return head + +def xhtml_wrap_tail(self): + return u'
' def xhtml_wrap(self, source): - # XXX factor out, watch view.py ~ Maintemplate.doctype - if self.req.xhtml_browser(): - dt = STRICT_DOCTYPE - else: - dt = STRICT_DOCTYPE_NOEXT - head = u'\n' + dt - return head + u'
%s
' % source.strip() + return u''.join((xhtml_wrap_header(self), source.strip(), xhtml_wrap_tail(self))) def jsonize(func): """decorator to sets correct content_type and calls `simplejson.dumps` on diff -r 3b6a6d2f9d7e -r ca7b122f34fa web/views/basetemplates.py --- a/web/views/basetemplates.py Tue Jul 28 10:19:14 2009 +0200 +++ b/web/views/basetemplates.py Tue Jul 28 10:23:48 2009 +0200 @@ -13,8 +13,10 @@ from cubicweb.vregistry import objectify_selector from cubicweb.selectors import match_kwargs from cubicweb.view import View, MainTemplate, NOINDEX, NOFOLLOW +from cubicweb.web.views.basecontrollers import xhtml_wrap_header, xhtml_wrap_tail from cubicweb.utils import make_uid, UStringIO + # main templates ############################################################## class LogInOutTemplate(MainTemplate): @@ -83,15 +85,12 @@ def call(self, view): view.set_request_content_type() view.set_stream() - xhtml_wrap = (self.req.form.has_key('__notemplate') and view.templatable - and view.content_type == self.req.html_content_type()) - if xhtml_wrap: - view.w(u'\n' + self.doctype) - view.w(u'
') - # have to replace our unicode stream using view's binary stream - view.render() - if xhtml_wrap: - view.w(u'
') + if view.content_type == self.req.html_content_type(): + view.w(xhtml_wrap_header(self)) + view.render() + view.w(xhtml_wrap_tail(self)) + else: + view.render() self._stream = view._stream