From 7ddb9c1082ec2141af0babd67c7b131ffaa72282 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9rome=20Perrin?= <jerome@nexedi.com> Date: Tue, 2 Jun 2015 06:43:15 +0200 Subject: [PATCH] downloadable: Always set content-disposition: inline when displaying inline A previous operation might have poluted the request --- .../Base_renderSimpleView.xml | 11 ++++++++--- .../erp5_deferred_style_core/Base_report.xml | 9 +++++++-- product/ERP5/mixin/downloadable.py | 2 ++ 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/bt5/erp5_deferred_style/SkinTemplateItem/portal_skins/erp5_deferred_style_core/Base_renderSimpleView.xml b/bt5/erp5_deferred_style/SkinTemplateItem/portal_skins/erp5_deferred_style_core/Base_renderSimpleView.xml index 6f4cfd7c62..56c39209b2 100644 --- a/bt5/erp5_deferred_style/SkinTemplateItem/portal_skins/erp5_deferred_style_core/Base_renderSimpleView.xml +++ b/bt5/erp5_deferred_style/SkinTemplateItem/portal_skins/erp5_deferred_style_core/Base_renderSimpleView.xml @@ -62,9 +62,14 @@ if skin_name and skin_name != \'None\': # make_query serializes None as \'None\' with portal.Localizer.translationContext(localizer_language):\n report_data = getattr(context, deferred_style_dialog_method)(**params)\n \n - attachment_name = [x[len(\' filename=\'):] for x in (request.RESPONSE.getHeader(\n - \'content-disposition\') or \'\').split(\';\')\n - if x.startswith(\' filename=\')][0]\n + attachment_name_list = [x[len(\' filename=\'):] for x in (request.RESPONSE.getHeader(\n + \'content-disposition\') or \'\').split(\';\')\n + if x.startswith(\' filename=\')]\n + if attachment_name_list:\n + attachment_name, = attachment_name_list\n + else:\n + assert \'inline\' in (request.RESPONSE.getHeader(\'content-disposition\') or \'\')\n + attachment_name = \'index.html\'\n if attachment_name.startswith(\'"\'):\n attachment_name = attachment_name[1:]\n if attachment_name.endswith(\'"\'):\n diff --git a/bt5/erp5_deferred_style/SkinTemplateItem/portal_skins/erp5_deferred_style_core/Base_report.xml b/bt5/erp5_deferred_style/SkinTemplateItem/portal_skins/erp5_deferred_style_core/Base_report.xml index c87386eab5..a0aa85ad38 100644 --- a/bt5/erp5_deferred_style/SkinTemplateItem/portal_skins/erp5_deferred_style_core/Base_report.xml +++ b/bt5/erp5_deferred_style/SkinTemplateItem/portal_skins/erp5_deferred_style_core/Base_report.xml @@ -82,9 +82,14 @@ with portal.Localizer.translationContext(localizer_language):\n report_method=dummyReportMethod,\n form=portal.restrictedTraverse(form_path)))\n \n - attachment_name = [x[len(\' filename=\'):] for x in (request.RESPONSE.getHeader(\n + attachment_name_list = [x[len(\' filename=\'):] for x in (request.RESPONSE.getHeader(\n \'content-disposition\') or \'\').split(\';\')\n - if x.startswith(\' filename=\')][0]\n + if x.startswith(\' filename=\')]\n + if attachment_name_list:\n + attachment_name, = attachment_name_list\n + else:\n + assert \'inline\' in (request.RESPONSE.getHeader(\'content-disposition\') or \'\')\n + attachment_name = \'index.html\'\n if attachment_name.startswith(\'"\'):\n attachment_name = attachment_name[1:]\n if attachment_name.endswith(\'"\'):\n diff --git a/product/ERP5/mixin/downloadable.py b/product/ERP5/mixin/downloadable.py index 3f1c574e7c..9f97426db6 100644 --- a/product/ERP5/mixin/downloadable.py +++ b/product/ERP5/mixin/downloadable.py @@ -127,6 +127,8 @@ class DownloadableMixin: RESPONSE.setHeader('Content-Disposition', 'attachment; filename="%s"' % filename) RESPONSE.setHeader('Accept-Ranges', 'bytes') + else: + RESPONSE.setHeader('Content-Disposition', 'inline') return str(data) security.declareProtected(Permissions.AccessContentsInformation, -- 2.30.9