[Erp5-report] r18459 - in /erp5/trunk/products/ERP5OOo: Document/ tests/

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Dec 21 10:11:14 CET 2007


Author: yusei
Date: Fri Dec 21 10:11:14 2007
New Revision: 18459

URL: http://svn.erp5.org?rev=18459&view=rev
Log:
Refactored dms ingestion system.

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

Modified: erp5/trunk/products/ERP5OOo/Document/OOoDocument.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5OOo/Document/OOoDocument.py?rev=18459&r1=18458&r2=18459&view=diff
==============================================================================
--- erp5/trunk/products/ERP5OOo/Document/OOoDocument.py (original)
+++ erp5/trunk/products/ERP5OOo/Document/OOoDocument.py Fri Dec 21 10:11:14 2007
@@ -38,7 +38,9 @@
 from Products.ERP5Type import Permissions, PropertySheet, Constraint, Interface
 from Products.ERP5Type.Cache import CachingMethod
 from Products.ERP5.Document.File import File
-from Products.ERP5.Document.Document import ConversionCacheMixin, ConversionError
+from Products.ERP5.Document.Document import ConversionCacheMixin
+from Products.ERP5.Document.Document import ConversionError
+from Products.ERP5.Document.Document import NotConvertedError
 from Products.ERP5.Document.File import _unpackData
 from zLOG import LOG, ERROR
 
@@ -139,6 +141,13 @@
   rx_strip = re.compile('<[^>]*?>', re.DOTALL|re.MULTILINE)
   rx_compr = re.compile('\s+')
 
+  security.declareProtected(Permissions.ModifyPortalContent, 'isSupportBaseDataConversion')
+  def isSupportBaseDataConversion(self):
+    """
+    OOoDocument is needed to conversion to base format.
+    """
+    return True
+
   def _setFile(self, data, precondition=None):
     File._setFile(self, data, precondition=precondition)
     if self.hasBaseData():
@@ -170,7 +179,7 @@
       return File.index_html(self, REQUEST, RESPONSE)
     # Make sure file is converted to base format
     if not self.hasBaseData():
-      self.convertToBaseFormat()
+      raise NotConvertedError
     # Else try to convert the document and return it
     mime, result = self.convert(format=format, display=display, **kw)
     if not mime:
@@ -215,7 +224,7 @@
       to provide an extensive list of conversion formats.
     """
     if not self.hasBaseData():
-      self.convertToBaseFormat()
+      raise NotConvertedError
 
     def cached_getTargetFormatItemList(content_type):
       server_proxy = self._mkProxy()
@@ -288,7 +297,7 @@
       Communicates with server to convert a file 
     """
     if not self.hasBaseData():
-      self.convertToBaseFormat()
+      raise NotConvertedError
     if format == 'text-content':
       # Extract text from the ODF file
       cs = cStringIO.StringIO()
@@ -333,7 +342,8 @@
     is_html = 0
     original_format = format
     if format == 'base-data':
-      if not self.hasBaseData(): self.convertToBaseFormat()
+      if not self.hasBaseData():
+        raise NotConvertedError
       return self.getBaseContentType(), self.getBaseData()
     if format == 'pdf':
       format_list = [x for x in self.getTargetFormatList()
@@ -360,7 +370,7 @@
       raise ConversionError("OOoDocument: target format %s is not supported" % format)
     # Check if we have already a base conversion
     if not self.hasBaseData():
-      self.convertToBaseFormat()
+      raise NotConvertedError
     # Return converted file
     if display is None or original_format not in STANDARD_IMAGE_FORMAT_LIST:
       has_format = self.hasConversion(format=format)
@@ -482,24 +492,26 @@
 
   security.declareProtected(Permissions.ModifyPortalContent,
                             'updateBaseMetadata')
-  def updateBaseMetadata(self, *arg, **kw):
+  def updateBaseMetadata(self, **kw):
     """
       Updates metadata information in the converted OOo document
       based on the values provided by the user. This is implemented
       through the invocation of the conversion server.
     """
-    data = self.getBaseData()
-    if data in ('', None):
-      raise ValueError, "OOoDocument: BaseData is empty. Document is not converted yet."
+    if not self.hasBaseData():
+      raise NotConvertedError
+
+    self.clearConversionCache()
 
     server_proxy = self._mkProxy()
     response_code, response_dict, response_message = \
           server_proxy.run_setmetadata(self.getId(),
-                                       enc(_unpackData(data)),
+                                       enc(_unpackData(self.getBaseData())),
                                        kw)
     if response_code == 200:
       # successful meta data extraction
       self._setBaseData(dec(response_dict['data']))
+      self.updateFileMetadata() # record in workflow history # XXX must put appropriate comments.
     else:
       # Explicitly raise the exception!
       raise ConversionError("OOoDocument: error getting document metadata %s:%s"

Modified: erp5/trunk/products/ERP5OOo/tests/testDms.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5OOo/tests/testDms.py?rev=18459&r1=18458&r2=18459&view=diff
==============================================================================
--- erp5/trunk/products/ERP5OOo/tests/testDms.py (original)
+++ erp5/trunk/products/ERP5OOo/tests/testDms.py Fri Dec 21 10:11:14 2007
@@ -444,6 +444,8 @@
     doc.edit(file=makeFileUpload('import_data_list.ods'))
     doc.publish()
     get_transaction().commit()
+    self.tic()
+    get_transaction().commit()
 
     uf = self.portal.acl_users
     uf._doAddUser('member_user2', 'secret', ['Member'], [])




More information about the Erp5-report mailing list