Commit 36177abf authored by Jérome Perrin's avatar Jérome Perrin

Form: set response content type when called directly

Form.__call__ replaces page template call, so it is also responsible
to set the content type in response.

With Page Templates, ZopePageTemplate._exec (called by
Shared.DC.Scripts.Bindings.__call__ and _bindAndExec) sets the
response content type and calls pt_render. Form.__call__ also calls
pt_render, so to behave like page template, it should also sets the
response content type.

In erp5_xhtml_style, we don't notice this, because global_definitions
contains a setHeader call to set content type to html.
parent 885d23a6
Pipeline #25426 failed with stage
in 0 seconds
......@@ -74,6 +74,11 @@ class TestERP5Form(ERP5TypeTestCase):
self.assertTrue(self.form.formUnProxify())
self.assertTrue(self.form.formShowRelatedProxyFields())
def test_publish_set_content_type(self):
resp = self.publish(self.form.getPath())
self.assertIn(b"test string field", resp.getBody())
self.assertEqual(resp.getHeader('Content-Type'), 'text/html; charset=utf-8')
class TestProxify(ERP5TypeTestCase):
......
......@@ -49,7 +49,7 @@ from AccessControl import Unauthorized, ClassSecurityInfo
from DateTime import DateTime
from ZODB.POSException import ConflictError
from zExceptions import Redirect
from Acquisition import aq_base
from Acquisition import aq_base, aq_get
from Products.PageTemplates.Expressions import SecureModuleImporter
from zExceptions import Forbidden
......@@ -676,7 +676,13 @@ class ERP5Form(Base, ZMIForm, ZopePageTemplate):
raise AccessControl_Unauthorized('This document is not authorized for view.')
else:
container = None
pt = getattr(self,self.pt)
pt = getattr(self, self.pt)
request = aq_get(self, 'REQUEST', None)
if request is not None:
response = request.response
if 'content-type' not in response.headers:
response.setHeader('content-type', self.content_type)
extra_context = dict( container=container,
template=self,
form=self,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment