[Erp5-report] r39346 nicolas - /erp5/trunk/products/PortalTransforms/TransformEngine.py

nobody at svn.erp5.org nobody at svn.erp5.org
Tue Oct 19 16:23:20 CEST 2010


Author: nicolas
Date: Tue Oct 19 16:23:19 2010
New Revision: 39346

URL: http://svn.erp5.org?rev=39346&view=rev
Log:
* Return requirements only if origin_mimetype and target_mimetype
  are matching transform policy

As an example: pdf to text conversion force a transformation
to intermediate HTML format, because w3m_dump is a requirement to output plain/text.
This patch allow pdf to text conversion to use pdf_to_text transform,
and let html to text conversion using w3m_dump, honouring configured policy.

Modified:
    erp5/trunk/products/PortalTransforms/TransformEngine.py

Modified: erp5/trunk/products/PortalTransforms/TransformEngine.py
URL: http://svn.erp5.org/erp5/trunk/products/PortalTransforms/TransformEngine.py?rev=39346&r1=39345&r2=39346&view=diff
==============================================================================
--- erp5/trunk/products/PortalTransforms/TransformEngine.py [utf8] (original)
+++ erp5/trunk/products/PortalTransforms/TransformEngine.py [utf8] Tue Oct 19 16:23:19 2010
@@ -163,7 +163,8 @@ class TransformTool(UniqueObject, Action
             return data
 
         ## get a path to output mime type
-        requirements = self._policies.get(str(target_mt), [])
+        requirements = self.getRequirementListByMimetype(str(orig_mt),
+                                                         str(target_mt))
         path = self._findPath(orig_mt, target_mt, list(requirements))
         if not path and requirements:
             log('Unable to satisfy requirements %s' % ', '.join(requirements),
@@ -195,6 +196,28 @@ class TransformTool(UniqueObject, Action
         # return idatastream object
         return result
 
+    def getRequirementListByMimetype(self, origin_mimetype, target_mimetype):
+      """Return requirements only if origin_mimetype
+      and target_mimetype match transform policy
+
+      As an example pdf => text conversion force a transformation
+      to intermediate HTML format, just because html_to_text is a requirement.
+      But we want using pdf_to_text directly.
+
+      So requirements are returned only if
+      origin_mimetype and target_mimetype sastify
+      the requirement: ie html_to_text is returned
+      only if origin_mimetype  == 'text/html' and
+      target_mimetype == 'text/plain'
+      """
+      result_list = []
+      candidate_requirement_list = self._policies.get(target_mimetype, [])
+      for candidate_requirement in candidate_requirement_list:
+        transform = getattr(self, candidate_requirement)
+        if origin_mimetype in transform.inputs:
+          result_list.append(candidate_requirement)
+      return result_list
+
     security.declarePublic('convertToData')
     def convertToData(self, target_mimetype, orig, data=None, object=None,
                       usedby=None, context=None, **kwargs):




More information about the Erp5-report mailing list