[Erp5-report] r26646 - in /erp5/trunk/products/ERP5: ./ Document/

nobody at svn.erp5.org nobody at svn.erp5.org
Mon Apr 27 11:14:02 CEST 2009


Author: luke
Date: Mon Apr 27 11:14:00 2009
New Revision: 26646

URL: http://svn.erp5.org?rev=26646&view=rev
Log:
 - add common class for AggregatedAmountList
 - use this class in Document.Transformation
 - updated copyrights in Document.Transformation

Added:
    erp5/trunk/products/ERP5/AggregatedAmountList.py
Modified:
    erp5/trunk/products/ERP5/Document/Transformation.py

Added: erp5/trunk/products/ERP5/AggregatedAmountList.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/AggregatedAmountList.py?rev=26646&view=auto
==============================================================================
--- erp5/trunk/products/ERP5/AggregatedAmountList.py (added)
+++ erp5/trunk/products/ERP5/AggregatedAmountList.py [utf8] Mon Apr 27 11:14:00 2009
@@ -1,0 +1,78 @@
+# -*- coding: utf8 -*-
+##############################################################################
+#
+# Copyright (c) 2009 Nexedi SA and Contributors. All Rights Reserved.
+#                    Łukasz Nowak <luke at nexedi.com>
+#
+# WARNING: This program as such is intended to be used by professional
+# programmers who take the whole responsability of assessing all potential
+# consequences resulting from its eventual inadequacies and bugs
+# End users who are looking for a ready-to-use solution with commercial
+# garantees and support are strongly adviced to contract a Free Software
+# Service Company
+#
+# This program is Free Software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+##############################################################################
+
+from UserList import UserList
+from Globals import InitializeClass
+from Products.PythonScripts.Utility import allow_class
+from AccessControl import ClassSecurityInfo
+from UserList import UserList
+class AggregatedAmountList(UserList):
+  """
+    Temporary object needed to aggregate Amount value
+    And to calculate some report or total value
+  """
+  meta_type = "AggregatedAmountList"
+  security = ClassSecurityInfo()
+#  security.declareObjectPublic()
+
+  security.declarePublic('getTotalPrice')
+  def getTotalPrice(self):
+    """
+      Return total base price
+    """
+    result = sum(filter(lambda y: y is not None,
+                        map(lambda x: x.getTotalPrice(), self)))
+    return result
+
+  security.declarePublic('getTotalDuration')
+  def getTotalDuration(self):
+    """
+      Return total duration
+    """
+    result = sum(filter(lambda y: y is not None, 
+                        map(lambda x: x.getDuration(), self)))
+    return result
+
+  def multiplyQuantity(self,context=None):
+    """
+      Take into account the quantity of the 
+      context. Change the quantity of each element.
+    """
+    quantity = None
+    if context is not None:
+      if context.getQuantity() is not None:
+        quantity = context.getQuantity()
+    if quantity is not None:
+      for x in self:
+        previous_quantity = x.getQuantity()
+        if previous_quantity is not None:
+          x.edit(quantity=context.getQuantity()*previous_quantity)
+
+InitializeClass(AggregatedAmountList)
+allow_class(AggregatedAmountList)

Modified: erp5/trunk/products/ERP5/Document/Transformation.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/Transformation.py?rev=26646&r1=26645&r2=26646&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/Transformation.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/Transformation.py [utf8] Mon Apr 27 11:14:00 2009
@@ -1,9 +1,11 @@
+# -*- coding: utf8 -*-
 ##############################################################################
 #
 # Copyright (c) 2002 Coramy SAS and Contributors. All Rights Reserved.
 #                    Thierry_Faucher <Thierry_Faucher at coramy.com>
-# Copyright (c) 2004, 2005 Nexedi SARL and Contributors. All Rights Reserved.
+# Copyright (c) 2004-2009 Nexedi SA and Contributors. All Rights Reserved.
 #                    Romain Courteaud <romain at nexedi.com>
+#                    Łukasz Nowak <luke at nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
@@ -28,7 +30,6 @@
 #
 ##############################################################################
 
-from Globals import InitializeClass
 from AccessControl import ClassSecurityInfo
 
 from Products.ERP5Type import Permissions, PropertySheet, Interface
@@ -38,10 +39,8 @@
 
 from Products.ERP5.Document.Predicate import Predicate
 
-from Products.PythonScripts.Utility import allow_class
-
 from Products.CMFCategory.Renderer import Renderer
-
+from Products.ERP5.AggregatedAmountList import AggregatedAmountList
 
 class Transformation(XMLObject, Predicate, Variated):
     """
@@ -270,51 +269,3 @@
       if context_quantity:
         result.multiplyQuantity(context=context)
       return result
-
-# XXX subclassing directly list would be better, 
-# but does not work yet (error with class and security)
-from UserList import UserList
-class AggregatedAmountList(UserList):
-  """
-    Temporary object needed to aggregate Amount value
-    And to calculate some report or total value
-  """
-  meta_type = "AggregatedAmountList"
-  security = ClassSecurityInfo()
-#  security.declareObjectPublic()
-
-  security.declarePublic('getTotalPrice')
-  def getTotalPrice(self):
-    """
-      Return total bas price of the transformation
-    """
-    result = sum(filter(lambda y: y is not None,
-                        map(lambda x: x.getTotalPrice(), self)))
-    return result
-
-  security.declarePublic('getTotalDuration')
-  def getTotalDuration(self):
-    """
-      Return total duration of the transformation
-    """
-    result = sum(filter(lambda y: y is not None, 
-                        map(lambda x: x.getDuration(), self)))
-    return result
-
-  def multiplyQuantity(self,context=None):
-    """
-      Take into account the quantity of the 
-      context. Change the quantity of each element.
-    """
-    quantity = None
-    if context is not None:
-      if context.getQuantity() is not None:
-        quantity = context.getQuantity()
-    if quantity is not None:
-      for x in self:
-        previous_quantity = x.getQuantity()
-        if previous_quantity is not None:
-          x.edit(quantity=context.getQuantity()*previous_quantity)
-  
-InitializeClass(AggregatedAmountList)
-allow_class(AggregatedAmountList)




More information about the Erp5-report mailing list