[Erp5-report] r18974 - /erp5/trunk/products/ERP5OOo/Document/OOoDocument.py

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Feb 1 12:59:10 CET 2008


Author: jp
Date: Fri Feb  1 12:59:09 2008
New Revision: 18974

URL: http://svn.erp5.org?rev=18974&view=rev
Log:
Quick patch to provide image display in small size for text documents.
convert must be better written to support all image class features.

Modified:
    erp5/trunk/products/ERP5OOo/Document/OOoDocument.py

Modified: erp5/trunk/products/ERP5OOo/Document/OOoDocument.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5OOo/Document/OOoDocument.py?rev=18974&r1=18973&r2=18974&view=diff
==============================================================================
--- erp5/trunk/products/ERP5OOo/Document/OOoDocument.py (original)
+++ erp5/trunk/products/ERP5OOo/Document/OOoDocument.py Fri Feb  1 12:59:09 2008
@@ -341,6 +341,7 @@
 
     # Make sure we can support html and pdf by default
     is_html = 0
+    requires_pdf_first = 0
     original_format = format
     if format == 'base-data':
       if not self.hasBaseData():
@@ -353,7 +354,14 @@
     elif format in STANDARD_IMAGE_FORMAT_LIST:
       format_list = [x for x in self.getTargetFormatList()
                                           if x.endswith(format)]
-      format = format_list[0]
+      if len(format_list):
+        format = format_list[0]
+      else:
+        # We must fist make a PDF
+        requires_pdf_first = 1
+        format_list = [x for x in self.getTargetFormatList()
+                                          if x.endswith('pdf')]
+        format = format_list[0]
     elif format == 'html':
       format_list = [x for x in self.getTargetFormatList()
                               if x.startswith('html') or x.endswith('html')]
@@ -373,7 +381,15 @@
     if not self.hasBaseData():
       raise NotConvertedError
     # Return converted file
-    if display is None or original_format not in STANDARD_IMAGE_FORMAT_LIST:
+    if requires_pdf_first:
+      # We should use original_format whenever we wish to
+      # display an image version of a document which needs to go
+      # through PDF
+      if display is None:
+        has_format = self.hasConversion(format=original_format)
+      else:
+        has_format = self.hasConversion(format=original_format, display=display)
+    elif display is None or original_format not in STANDARD_IMAGE_FORMAT_LIST:
       has_format = self.hasConversion(format=format)
     else:
       has_format = self.hasConversion(format=format, display=display)
@@ -395,7 +411,8 @@
         self.populateContent(zip_file=z)
         z.close()
         cs.close()
-      if display is None or original_format not in STANDARD_IMAGE_FORMAT_LIST:
+      if (display is None or original_format not in STANDARD_IMAGE_FORMAT_LIST) \
+        and not requires_pdf_first:
         self.setConversion(data, mime, format=format)
       else:
         temp_image = self.portal_contributions.newContent(
@@ -403,7 +420,18 @@
                                        temp_object=1)
         temp_image._setData(data)
         mime, data = temp_image.convert(original_format, display=display)
-        self.setConversion(data, mime, format=format, display=display)
+        if requires_pdf_first:
+          if display is None:
+            self.setConversion(data, mime, format=original_format)
+          else:
+            self.setConversion(data, mime, format=original_format, display=display)
+        else:
+          if display is None:
+            self.setConversion(data, mime, format=format)
+          else:
+            self.setConversion(data, mime, format=format, display=display)
+    if requires_pdf_first:
+      format = original_format
     if display is None or original_format not in STANDARD_IMAGE_FORMAT_LIST:
       return self.getConversion(format=format)
     else:
@@ -436,18 +464,28 @@
       must_close = 1
     else:
       must_close = 0
+    first_page = True
     for f in zip_file.infolist():
       file_name = f.filename
-      if not file_name.endswith('html'): # XXX - we must add here more values in order to
-                                         # support multi-page HTML conversions
-                                         # such as for presentations.
-        document = self.get(file_name, None)
-        if document is not None:
-          self.manage_delObjects([file_name])
-        newContent = UnrestrictedMethod(self.portal_contributions.newContent)
+      if file_name.endswith('html') and self.getPortalType() != 'Presentation':
+      #if file_name.endswith('html'):
+        continue
+      #if first_page and file_name.endswith('html'):
+      #  first_page = False
+      #  break
+      LOG('file_name', 0, file_name)
+      document = self.get(file_name, None)
+      if document is not None:
+        self.manage_delObjects([file_name])
+      newContent = UnrestrictedMethod(self.portal_contributions.newContent)
+      if file_name.endswith('html'):
+        newContent(id=file_name, container=self, portal_type='Web Page',
+                  file_name=file_name,
+                  data=zip_file.read(file_name))
+      else:
         newContent(id=file_name, container=self,
-                   file_name=file_name,
-                   data=zip_file.read(file_name))
+                  file_name=file_name,
+                  data=zip_file.read(file_name))
     if must_close:
       zip_file.close()
       archive_file.close()




More information about the Erp5-report mailing list