From a891dff6a2d9f80743671592d3c4bb59936403be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9rome=20Perrin?= <jerome@nexedi.com> Date: Thu, 29 Oct 2009 10:53:53 +0000 Subject: [PATCH] Happens the extension in the filename in original format as well git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@30100 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5OOo/OOoTemplate.py | 7 +++++-- product/ERP5OOo/tests/testDeferredStyle.py | 9 ++++++--- product/ERP5OOo/tests/testOOoBatchMode.py | 4 ++-- product/ERP5OOo/tests/testOOoDynamicStyle.py | 4 ++-- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/product/ERP5OOo/OOoTemplate.py b/product/ERP5OOo/OOoTemplate.py index bf8d9f1d09..7cd88bcaac 100644 --- a/product/ERP5OOo/OOoTemplate.py +++ b/product/ERP5OOo/OOoTemplate.py @@ -522,8 +522,11 @@ class OOoTemplate(ZopePageTemplate): return self._asFormat(ooo, format, request, batch_mode) if not format and not batch_mode: - request.RESPONSE.setHeader('Content-Type','%s; charset=utf-8' % self.content_type) - request.RESPONSE.setHeader('Content-disposition', 'inline;filename="%s"' % self.title_or_id()) + request.RESPONSE.setHeader('Content-Type', + '%s; charset=utf-8' % self.content_type) + request.RESPONSE.setHeader('Content-disposition', + 'inline;filename="%s%s"' % (self.title_or_id(), + guess_extension(self.content_type))) if DevelopmentMode: # Validate XML in development mode diff --git a/product/ERP5OOo/tests/testDeferredStyle.py b/product/ERP5OOo/tests/testDeferredStyle.py index a7e7c6be8d..33f5d0f165 100644 --- a/product/ERP5OOo/tests/testDeferredStyle.py +++ b/product/ERP5OOo/tests/testDeferredStyle.py @@ -42,6 +42,7 @@ class TestDeferredStyle(ERP5TypeTestCase, ZopeTestCase.Functional): """Tests deferred styles for ERP5.""" skin = content_type = None recipient_email_address = 'invalid@example.com' + attachment_file_extension = '' username = 'bob' password = 'bobpwd' first_name = 'Bob' @@ -100,10 +101,10 @@ class TestDeferredStyle(ERP5TypeTestCase, ZopeTestCase.Functional): for part in mail_message.walk(): content_type = part.get_content_type() file_name = part.get_filename() - # XXX the attachment name might change some day - if file_name == 'report_view': + if file_name == 'report_view%s' % self.attachment_file_extension: self.assertEquals(content_type, self.content_type) - self.assertEquals('attachment; filename="report_view"', + self.assertEquals('attachment; filename="report_view%s"' % + self.attachment_file_extension, part.get('Content-Disposition')) data = part.get_payload(decode=True) error_list = Validator().validate(data) @@ -117,11 +118,13 @@ class TestDeferredStyle(ERP5TypeTestCase, ZopeTestCase.Functional): class TestODSDeferredStyle(TestDeferredStyle): skin = 'ODS' content_type = 'application/vnd.oasis.opendocument.spreadsheet' + attachment_file_extension = '.ods' class TestODTDeferredStyle(TestDeferredStyle): skin = 'ODT' content_type = 'application/vnd.oasis.opendocument.text' + attachment_file_extension = '.odt' def test_suite(): diff --git a/product/ERP5OOo/tests/testOOoBatchMode.py b/product/ERP5OOo/tests/testOOoBatchMode.py index 7d113e86dc..14dc753b5a 100644 --- a/product/ERP5OOo/tests/testOOoBatchMode.py +++ b/product/ERP5OOo/tests/testOOoBatchMode.py @@ -77,7 +77,7 @@ class TestOoodResponse(ERP5TypeTestCase): ERP5Site_viewNothingAsOdt(batch_mode=0) self.assertEqual('application/vnd.oasis.opendocument.text', request.RESPONSE.getHeader('content-type').split(';')[0]) - self.assertEqual('inline;filename="ERP5Site_viewNothingAsOdt"', + self.assertEqual('inline;filename="ERP5Site_viewNothingAsOdt.odt"', request.RESPONSE.getHeader('content-disposition')) def test_01b_noExcEmptyFormatNoBatchMode(self): @@ -87,7 +87,7 @@ class TestOoodResponse(ERP5TypeTestCase): ERP5Site_viewNothingAsOdt(format='', batch_mode=0) self.assertEqual('application/vnd.oasis.opendocument.text', request.RESPONSE.getHeader('content-type').split(';')[0]) - self.assertEqual('inline;filename="ERP5Site_viewNothingAsOdt"', + self.assertEqual('inline;filename="ERP5Site_viewNothingAsOdt.odt"', request.RESPONSE.getHeader('content-disposition')) def test_02_noExcNoFormatBatchMode(self): diff --git a/product/ERP5OOo/tests/testOOoDynamicStyle.py b/product/ERP5OOo/tests/testOOoDynamicStyle.py index 34997178e3..fd860b6d5c 100644 --- a/product/ERP5OOo/tests/testOOoDynamicStyle.py +++ b/product/ERP5OOo/tests/testOOoDynamicStyle.py @@ -123,7 +123,7 @@ return getattr(context, "%s_%s" % (parameter, current_language)) response = self.publish('/' + self.folder.Dynamic_viewAsOdt.absolute_url(1)) self.assertEqual('application/vnd.oasis.opendocument.text', response.getHeader('content-type').split(';')[0]) - self.assertEqual('inline;filename="Dynamic_viewAsOdt"', + self.assertEqual('inline;filename="Dynamic_viewAsOdt.odt"', response.getHeader('content-disposition')) self._validate(response.getBody()) self.assertTrue(200, response.getStatus()) @@ -177,7 +177,7 @@ return getattr(context, "%s_%s" % (parameter, current_language)) self.assertTrue(200, response.getStatus()) self.assertEqual('application/vnd.oasis.opendocument.text', response.getHeader('content-type').split(';')[0]) - self.assertEqual('inline;filename="Static_viewAsOdt"', + self.assertEqual('inline;filename="Static_viewAsOdt.odt"', response.getHeader('content-disposition')) self._validate(response.getBody()) odt_zip_file = self._create_odt_zip_file(response.getBody()) -- 2.30.9