From 062aa684066f764a5a4ed2e8a63d5e8028e5314b Mon Sep 17 00:00:00 2001
From: Romain Courteaud <romain@nexedi.com>
Date: Thu, 18 Feb 2010 15:30:08 +0000
Subject: [PATCH] Do not truncate filename when it contains a dot.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@32796 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5OOo/Document/OOoDocument.py         |   2 +-
 product/ERP5OOo/tests/testDms.py                |   6 +++---
 .../import.file.with.dot.in.filename.ods        | Bin 0 -> 12318 bytes
 3 files changed, 4 insertions(+), 4 deletions(-)
 create mode 100644 product/ERP5OOo/tests/test_document/import.file.with.dot.in.filename.ods

diff --git a/product/ERP5OOo/Document/OOoDocument.py b/product/ERP5OOo/Document/OOoDocument.py
index c5b36ef338..05e488a249 100644
--- a/product/ERP5OOo/Document/OOoDocument.py
+++ b/product/ERP5OOo/Document/OOoDocument.py
@@ -204,7 +204,7 @@ class OOoDocument(PermanentURLMixIn, File, CachedConvertableMixin):
       raise NotConvertedError
     # Else try to convert the document and return it
     mime, result = self.convert(format=format, display=display, **kw)
-    converted_filename = '%s.%s'%(filename.split('.')[0],  format)
+    converted_filename = '%s.%s'%('.'.join(filename.split('.')[:-1]),  format)
     if not mime:
       mime = getToolByName(self, 'mimetypes_registry').lookupExtension('name.%s' % format)
     RESPONSE.setHeader('Content-Length', len(result))
diff --git a/product/ERP5OOo/tests/testDms.py b/product/ERP5OOo/tests/testDms.py
index 082ffeea93..ac901aebae 100644
--- a/product/ERP5OOo/tests/testDms.py
+++ b/product/ERP5OOo/tests/testDms.py
@@ -595,7 +595,7 @@ class TestDocument(ERP5TypeTestCase, ZopeTestCase.Functional):
     doc = self.portal.document_module.newContent(
                                   source_reference='test.ods',
                                   portal_type='Spreadsheet')
-    doc.edit(file=makeFileUpload('import_data_list.ods'))
+    doc.edit(file=makeFileUpload('import.file.with.dot.in.filename.ods'))
     doc.publish()
     transaction.commit()
     self.tic()
@@ -609,14 +609,14 @@ class TestDocument(ERP5TypeTestCase, ZopeTestCase.Functional):
     response = self.publish('%s/Document_convert?format=pdf' % doc.getPath(),
                             basic='member_user2:secret')
     self.assertEquals('application/pdf', response.headers['content-type'])
-    self.assertEquals('attachment; filename="import_data_list.pdf"',
+    self.assertEquals('attachment; filename="import.file.with.dot.in.filename.pdf"',
                       response.headers['content-disposition'])
 
     # test Print icon works on OOoDocument
     response = self.publish('%s/OOoDocument_print' % doc.getPath())
     self.assertEquals('application/pdf',
                       response.headers['content-type'])
-    self.assertEquals('attachment; filename="import_data_list.pdf"',
+    self.assertEquals('attachment; filename="import.file.with.dot.in.filename.pdf"',
                       response.headers['content-disposition'])
 
   def test_05_getCreationDate(self):
diff --git a/product/ERP5OOo/tests/test_document/import.file.with.dot.in.filename.ods b/product/ERP5OOo/tests/test_document/import.file.with.dot.in.filename.ods
new file mode 100644
index 0000000000000000000000000000000000000000..b7c4bd7eecb9e4fda64b61b97c2afbf0778b74d4
GIT binary patch
literal 12318
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

literal 0
HcmV?d00001

-- 
2.30.9