[Erp5-report] r30121 - in /erp5/trunk/products/ERP5OOo: ./ tests/

nobody at svn.erp5.org nobody at svn.erp5.org
Thu Oct 29 16:11:47 CET 2009


Author: jerome
Date: Thu Oct 29 16:11:44 2009
New Revision: 30121

URL: http://svn.erp5.org?rev=30121&view=rev
Log:
Introduce a new property "filename" on OOoTemplate that can be used to specify
the filename in content-disposition header.

Modified:
    erp5/trunk/products/ERP5OOo/OOoTemplate.py
    erp5/trunk/products/ERP5OOo/tests/testDeferredStyle.py

Modified: erp5/trunk/products/ERP5OOo/OOoTemplate.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5OOo/OOoTemplate.py?rev=30121&r1=30120&r2=30121&view=diff
==============================================================================
--- erp5/trunk/products/ERP5OOo/OOoTemplate.py [utf8] (original)
+++ erp5/trunk/products/ERP5OOo/OOoTemplate.py [utf8] Thu Oct 29 16:11:44 2009
@@ -165,6 +165,12 @@
         'help':('ERPForm', 'pdfStylesheet.txt')},
       )
     )
+
+  _properties= ZopePageTemplate._properties + (
+                                        {'id': 'filename',
+                                         'type': 'tales',
+                                         'mode': 'w',}, )
+  filename = 'object/title_or_id'
 
   security.declareProtected('View management screens', 'formSettings')
   formSettings = PageTemplateFile('www/formSettings', globals(),
@@ -525,7 +531,7 @@
       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(),
+          'inline;filename="%s%s"' % (self._getFileName(),
                                       guess_extension(self.content_type)))
     
     if DevelopmentMode:
@@ -572,29 +578,36 @@
               if x[1].endswith('pdf')]
       if len(tgts) > 1:
         REQUEST.RESPONSE.setHeader('Content-type', 'text/html')
-        REQUEST.RESPONSE.setHeader('Content-disposition',
-            'inline;filename="%s.pdf"' % self.title_or_id())
         raise ValueError, 'multiple pdf formats found - this shouldnt happen'
       if len(tgts) == 0:
         REQUEST.RESPONSE.setHeader('Content-type', 'text/html')
-        REQUEST.RESPONSE.setHeader('Content-disposition',
-            'inline;filename="%s.pdf"' % self.title_or_id())
         raise ValueError, 'no pdf format found'
       fmt = tgts[0]
       mime, data = tmp_ooo.convert(fmt)
       if REQUEST is not None:
           REQUEST.RESPONSE.setHeader('Content-type', 'application/pdf')
           REQUEST.RESPONSE.setHeader('Content-disposition',
-              'attachment;filename="%s.pdf"' % self.title_or_id())
+              'attachment;filename="%s.pdf"' % self._getFileName())
       return data
     mime, data = tmp_ooo.convert(format)
     if REQUEST is not None and not batch_mode:
       REQUEST.RESPONSE.setHeader('Content-type', mime)
       REQUEST.RESPONSE.setHeader('Content-disposition',
-          'attachment;filename="%s.%s"' % (self.title_or_id(),format))
+          'attachment;filename="%s.%s"' % (self._getFileName(),format))
         # FIXME the above lines should return zip format when html was requested
     return data
 
+  def _getFileName(self):
+    """Returns the filename used for content-disposition header.
+    """
+    # The "filename" property has a TALES type, but getProperty for TALES types
+    # only works if the context has an ERP5 Site in his acquisition context.
+    # If it's not the case, we will not evaluate the TALES, but simply use the
+    # template's title or id as filename.
+    if getattr(self, 'getPortalObject', None) is None:
+      return self.title_or_id()
+    return self.getProperty('filename')
+
 InitializeClass(OOoTemplate)
 
 class FSOOoTemplate(FSPageTemplate, OOoTemplate):

Modified: erp5/trunk/products/ERP5OOo/tests/testDeferredStyle.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5OOo/tests/testDeferredStyle.py?rev=30121&r1=30120&r2=30121&view=diff
==============================================================================
--- erp5/trunk/products/ERP5OOo/tests/testDeferredStyle.py [utf8] (original)
+++ erp5/trunk/products/ERP5OOo/tests/testDeferredStyle.py [utf8] Thu Oct 29 16:11:44 2009
@@ -101,9 +101,10 @@
     for part in mail_message.walk():
       content_type = part.get_content_type()
       file_name = part.get_filename()
-      if file_name == 'report_view%s' % self.attachment_file_extension:
+      # "History" is the title of Base_viewHistory form
+      if file_name == 'History%s' % self.attachment_file_extension:
         self.assertEquals(content_type, self.content_type)
-        self.assertEquals('attachment; filename="report_view%s"' %
+        self.assertEquals('attachment; filename="History%s"' %
                                 self.attachment_file_extension,
                           part.get('Content-Disposition'))
         data = part.get_payload(decode=True)




More information about the Erp5-report mailing list