[Erp5-report] r18458 - in /erp5/trunk/products/ERP5: Document/ Tool/

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


Author: yusei
Date: Fri Dec 21 10:10:23 2007
New Revision: 18458

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

Modified:
    erp5/trunk/products/ERP5/Document/Document.py
    erp5/trunk/products/ERP5/Tool/ContributionTool.py

Modified: erp5/trunk/products/ERP5/Document/Document.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/Document.py?rev=18458&r1=18457&r2=18458&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/Document.py (original)
+++ erp5/trunk/products/ERP5/Document/Document.py Fri Dec 21 10:10:23 2007
@@ -97,6 +97,8 @@
       pass
 
 class ConversionError(Exception):pass
+
+class NotConvertedError(Exception):pass
 
 class ConversionCacheMixin:
   """
@@ -921,7 +923,7 @@
       returns properties which should be set on the document
     """
     if not self.hasBaseData():
-      self.convertToBaseFormat()
+      raise NotConvertedError
     method = self._getTypeBasedMethod('getPropertyDictFromContent',
         fallback_script_id='Document_getPropertyDictFromContent')
     return method()
@@ -1165,26 +1167,15 @@
       Use accessors (getBaseData, setBaseData, hasBaseData, etc.)
     """
     try:
-      msg = self._convertToBaseFormat() # Call implemetation method
+      message = self._convertToBaseFormat() # Call implemetation method
       self.clearConversionCache() # Conversion cache is now invalid
-      if msg is None:
-        msg = 'Converted to %s.' % self.getBaseContentType()
-      self.convertFile(comment=msg) # Invoke workflow method
-    except NotImplementedError:# we don't do any workflow action if nothing has been done
-      msg = '' 
-    except ConversionError, e:
-      msg = 'Problem: %s' % (str(e) or 'undefined.')
-      #self.processFile(comment=msg)
-      raise ConversionError, msg
-    except Fault, e:
-      msg = 'Problem: %s' % (repr(e) or 'undefined.')
-      #self.processFile(comment=msg)
-      raise Fault, msg
-    except socket.error, e:
-      msg = 'Problem: %s' % (repr(e) or 'undefined.')
-      #self.processFile(comment=msg)
-      raise socket.error, msg
-    return msg
+      if message is None:
+        # XXX Need to translate.
+        message = 'Converted to %s.' % self.getBaseContentType()
+      self.convertFile(comment=message) # Invoke workflow method
+    except NotImplementedError:
+      message = ''
+    return message
 
   def _convertToBaseFormat(self):
     """
@@ -1203,6 +1194,14 @@
       links (in combindation with populate).
     """
     raise NotImplementedError
+
+  security.declareProtected(Permissions.ModifyPortalContent, 'isSupportBaseDataConversion')
+  def isSupportBaseDataConversion(self):
+    """
+    This is a public interface to check a document that is support conversion
+    to base format and can be overridden in subclasses.
+    """
+    return False
 
   def convertFile(self, **kw):
     """

Modified: erp5/trunk/products/ERP5/Tool/ContributionTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Tool/ContributionTool.py?rev=18458&r1=18457&r2=18458&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Tool/ContributionTool.py (original)
+++ erp5/trunk/products/ERP5/Tool/ContributionTool.py Fri Dec 21 10:10:23 2007
@@ -458,7 +458,14 @@
           # If we need to discoverMetadata synchronously, it must
           # be for user interface and should thus be handled by
           # ZODB scripts
-          document.activate().discoverMetadata(file_name=name, user_login=user_login)
+
+          # XXX converting state is for only document which is necessary to
+          # convert base format.
+          portal_workflow = self.getPortalObject().portal_workflow
+          if 'processing_status_workflow' in portal_workflow.getChainFor(document):
+            document.processFile() # move to converting state.
+          document.activate().Document_convertToBaseFormatAndDiscoverMetadata(
+            file_name=name, user_login=user_login)
       else:
         if document.isExternalDocument():
           document = existing_document




More information about the Erp5-report mailing list