[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