[Erp5-report] r33555 nicolas.dumazet - /erp5/trunk/products/ERP5/Document/Resource.py

nobody at svn.erp5.org nobody at svn.erp5.org
Wed Mar 10 06:59:47 CET 2010


Author: nicolas.dumazet
Date: Wed Mar 10 06:59:47 2010
New Revision: 33555

URL: http://svn.erp5.org?rev=33555&view=rev
Log:
Extend convertQuantity to support transformed_resource

Modified:
    erp5/trunk/products/ERP5/Document/Resource.py

Modified: erp5/trunk/products/ERP5/Document/Resource.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/Resource.py?rev=33555&r1=33554&r2=33555&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/Resource.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/Resource.py [utf8] Wed Mar 10 06:59:47 2010
@@ -897,11 +897,12 @@
 
     # Unit conversion
     security.declareProtected(Permissions.AccessContentsInformation, 'convertQuantity')
-    def convertQuantity(self, quantity, from_unit, to_unit, variation_list=()):
+    def convertQuantity(self, quantity, from_unit, to_unit, variation_list=(),
+      transformed_resource=None, transformed_variation_list=()):
       # 'variation_list' parameter may be deprecated:
       # cf Measure.getConvertedQuantity
       try:
-        return quantity * self._getConversionRatio(from_unit, variation_list) \
+        result = quantity * self._getConversionRatio(from_unit, variation_list)\
                         / self._getConversionRatio(to_unit, variation_list)
       except (ArithmeticError, AttributeError, LookupError, TypeError), error:
         # For compatibility, we only log the error and return None.
@@ -909,6 +910,28 @@
         LOG('Resource.convertQuantity', WARNING,
             'could not convert quantity for %s (%r)'
             % (self.getRelativeUrl(), error))
+        return None
+
+      if transformed_resource is not None:
+        variation_text = '\n'.join(variation_list)
+        transformed_variation_text = '\n'.join(transformed_variation_list)
+        transformed_uid = transformed_resource.getUid()
+
+        query = self.zGetTransformedResourceConversionRatio(\
+                    ui = self.getUid(),
+                    variation_text = variation_text,
+                    transformed_uid = transformed_uid,
+                    transformed_variation_text=transformed_variation_text,
+                  )
+        if len(query) == 0:
+          LOG('Resource.convertQuantity', WARNING,
+              'could not get Transformation associated to %s -> %s'
+              % (transformed_resource.getRelativeUrl(),
+                self.getRelativeUrl()))
+          return None
+        result *= query[0].quantity
+
+      return result
 
     security.declareProtected(Permissions.AccessContentsInformation,
                               'getMeasureList')




More information about the Erp5-report mailing list