[Erp5-report] r35394 nicolas - /erp5/trunk/products/ERP5OOo/OOoTemplate.py

nobody at svn.erp5.org nobody at svn.erp5.org
Mon May 17 16:01:46 CEST 2010


Author: nicolas
Date: Mon May 17 16:01:46 2010
New Revision: 35394

URL: http://svn.erp5.org?rev=35394&view=rev
Log:
* Let OOoDocument.index_html taking care about
RESPONSE headers.
* There is no need to treat pdf conversion in specfic way.

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

Modified: erp5/trunk/products/ERP5OOo/OOoTemplate.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5OOo/OOoTemplate.py?rev=35394&r1=35393&r2=35394&view=diff
==============================================================================
--- erp5/trunk/products/ERP5OOo/OOoTemplate.py [utf8] (original)
+++ erp5/trunk/products/ERP5OOo/OOoTemplate.py [utf8] Mon May 17 16:01:46 2010
@@ -568,18 +568,24 @@
             'Validation of %s failed:\n%s' % (self.getId(), ''.join(err_list)))
 
     format = opts.get('format', request.get('format', None))
+
+    from Products.ERP5Type.Document import newTempOOoDocument
+    tmp_ooo = newTempOOoDocument(self, self.title_or_id())
+    tmp_ooo.edit(data=ooo,
+                 source_reference='%s.%s' % (self._getFileName(), format),
+                 content_type=self.content_type,)
     if format:
-      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%s"' % (self._getFileName(),
-                                      guess_extension(self.content_type) or ''))
-
-    return ooo
-  
+      # Performance improvement: 
+      # Call convertToBaseFormat only if user
+      # ask a particular output format
+      tmp_ooo.convertToBaseFormat()
+
+    if request is not None and not batch_mode:
+      return tmp_ooo.index_html(REQUEST=request,
+                                RESPONSE=request.RESPONSE,
+                                format=format)
+    return tmp_ooo.convert(format)[1]
+
   def om_icons(self):
     """Return a list of icon URLs to be displayed by an ObjectManager"""
     icons = ({'path': 'misc_/ERP5OOo/OOo.png',
@@ -592,47 +598,6 @@
                           'title': 'This template has an error'},)
     return icons
 
-  def _asPdf(self, ooo, REQUEST=None):
-    """
-    Return OOo report as pdf
-    """
-    return self._asFormat(ooo, 'pdf', REQUEST)
-
-  def _asFormat(self, ooo, format, REQUEST=None, batch_mode=0):
-    # Now create a temp OOoDocument to convert data to pdf
-    from Products.ERP5Type.Document import newTempOOoDocument
-    tmp_ooo = newTempOOoDocument(self, self.title_or_id())
-    tmp_ooo.edit(data=ooo,
-                 fname=self.title_or_id(),
-                 source_reference=self.title_or_id(),
-                 content_type=self.content_type,)
-    tmp_ooo.convertToBaseFormat()
-    if format == 'pdf' and not batch_mode:
-      # Slightly different implementation
-      # now convert it to pdf
-      tgts = [x[1] for x in tmp_ooo.getTargetFormatItemList()
-              if x[1].endswith('pdf')]
-      if len(tgts) > 1:
-        REQUEST.RESPONSE.setHeader('Content-type', 'text/html')
-        raise ValueError, 'multiple pdf formats found - this shouldnt happen'
-      if len(tgts) == 0:
-        REQUEST.RESPONSE.setHeader('Content-type', 'text/html')
-        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._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._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.
     """




More information about the Erp5-report mailing list