[Erp5-report] r27651 - /erp5/trunk/products/ERP5/Document/TradeModelLine.py

nobody at svn.erp5.org nobody at svn.erp5.org
Thu Jun 18 10:58:25 CEST 2009


Author: luke
Date: Thu Jun 18 10:58:20 2009
New Revision: 27651

URL: http://svn.erp5.org?rev=27651&view=rev
Log:
 - remove finished TODOs
 - reformat to use 2 spaces indentation

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

Modified: erp5/trunk/products/ERP5/Document/TradeModelLine.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/TradeModelLine.py?rev=27651&r1=27650&r2=27651&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/TradeModelLine.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/TradeModelLine.py [utf8] Thu Jun 18 10:58:20 2009
@@ -46,193 +46,187 @@
   return is_movement
 
 class TradeModelLine(Predicate, XMLMatrix, Amount):
-    """Trade Model Line is a way to represent trade transformation for movements
-
-    TODO:
-      - make this code readable
-      - use comments
-      - use doctrings
-    """
-    meta_type = 'ERP5 Trade Model Line'
-    portal_type = 'Trade Model Line'
-
-    # Declarative security
-    security = ClassSecurityInfo()
-    security.declareObjectProtected(Permissions.AccessContentsInformation)
-
-    # Declarative interfaces
-    zope.interface.implements(
-        interfaces.ITransformation,
-        interfaces.IVariated
-    )
-
-    # Declarative properties
-    property_sheets = ( PropertySheet.Base
-                    , PropertySheet.SimpleItem
-                    , PropertySheet.CategoryCore
-                    , PropertySheet.Amount
-                    , PropertySheet.Price
-                    , PropertySheet.TradeModelLine
-                    , PropertySheet.Reference
-                    , PropertySheet.Predicate
-                    )
-
-    security.declareProtected(Permissions.AccessContentsInformation,
-                              'getPrice')
-    def getPrice(self):
-      return self._baseGetPrice()
-
-    def updateAggregatedAmountList(self, context, **kw):
-      raise NotImplementedError('TODO')
-
-    security.declareProtected(Permissions.AccessContentsInformation,
-                              'getAggregatedAmountList')
-    def getAggregatedAmountList(self, context, movement_list = None,
-        current_aggregated_amount_list = None, base_id='movement', **kw):
-      from Products.ERP5Type.Document import newTempSimulationMovement
-
-      # test with predicate if this model line could be applied
-      if not self.test(context):
-        # This model_line should not be applied
-        return []
-      if movement_list is None:
+  """Trade Model Line is a way to represent trade transformation for movements"""
+  meta_type = 'ERP5 Trade Model Line'
+  portal_type = 'Trade Model Line'
+
+  # Declarative security
+  security = ClassSecurityInfo()
+  security.declareObjectProtected(Permissions.AccessContentsInformation)
+
+  # Declarative interfaces
+  zope.interface.implements(
+      interfaces.ITransformation,
+      interfaces.IVariated
+  )
+
+  # Declarative properties
+  property_sheets = ( PropertySheet.Base
+                  , PropertySheet.SimpleItem
+                  , PropertySheet.CategoryCore
+                  , PropertySheet.Amount
+                  , PropertySheet.Price
+                  , PropertySheet.TradeModelLine
+                  , PropertySheet.Reference
+                  , PropertySheet.Predicate
+                  )
+
+  security.declareProtected(Permissions.AccessContentsInformation,
+                            'getPrice')
+  def getPrice(self):
+    return self._baseGetPrice()
+
+  def updateAggregatedAmountList(self, context, **kw):
+    raise NotImplementedError('TODO')
+
+  security.declareProtected(Permissions.AccessContentsInformation,
+                            'getAggregatedAmountList')
+  def getAggregatedAmountList(self, context, movement_list = None,
+      current_aggregated_amount_list = None, base_id='movement', **kw):
+    from Products.ERP5Type.Document import newTempSimulationMovement
+
+    # test with predicate if this model line could be applied
+    if not self.test(context):
+      # This model_line should not be applied
+      return []
+    if movement_list is None:
+      movement_list = []
+    if current_aggregated_amount_list is None:
+      current_aggregated_amount_list = []
+
+    normal_resource_use_category_list = self.\
+        portal_preferences.getPreferredNormalResourceUseCategoryList()
+    if normal_resource_use_category_list is None:
+      raise ValueError('preferred_normal_resource_use_category is not ' + \
+          'configured in System Preferences')
+
+    # if movement_list is passed as parameter, it shall be used,
+    # otherwise it is needed to look up for movements
+    if len(movement_list) == 0:
+      # no movements passed, need to find some
+      if isMovement(context):
+        # create movement lists from context
+        movement_list = [context]
+      else:
+        # create movement list for delivery's movements
         movement_list = []
-      if current_aggregated_amount_list is None:
-        current_aggregated_amount_list = []
-
-      normal_resource_use_category_list = self.\
-          portal_preferences.getPreferredNormalResourceUseCategoryList()
-      if normal_resource_use_category_list is None:
-        raise ValueError('preferred_normal_resource_use_category is not ' + \
-            'configured in System Preferences')
-
-      # if movement_list is passed as parameter, it shall be used,
-      # otherwise it is needed to look up for movements
-      if len(movement_list) == 0:
-        # no movements passed, need to find some
-        if isMovement(context):
-          # create movement lists from context
-          movement_list = [context]
-        else:
-          # create movement list for delivery's movements
-          movement_list = []
-          for movement in context.getMovementList():
-            # XXX: filtering shall be in getMovementList
-            # add only movement which are input (i.e. resource use category
-            # is in the normal resource use preference list). Output will
-            # be recalculated
-            movement_resource = movement.getResourceValue()
-            if movement_resource is not None:
-              if movement_resource.getUse() in \
-                  normal_resource_use_category_list:
-                movement_list.append(movement)
-
-      aggregated_amount_list = AggregatedAmountList()
-      base_application_list = self.getBaseApplicationList()
-
-      self_id = self.getParentValue().getId() + '_' + self.getId()
-
-      tmp_movement_list = [q for q in current_aggregated_amount_list \
-          if q.getReference() == self.getReference() ]
-      if len(tmp_movement_list) > 0:
-        tmp_movement_list = tmp_movement_list[:1] # list is needed in case of
-                                                  # having cells
-        update = 1
-      else:
-        common_params = {
-          'causality': self.getRelativeUrl(),
-          'resource': self.getResource(),
-          'reference': self.getReference(),
-          'base_application_list': base_application_list,
-          'base_contribution_list': self.getBaseContributionList(),
-          'start_date': context.getStartDate(),
-          'stop_date': context.getStopDate(),
-          'create_line': self.isCreateLine(),
-          'trade_phase_list': self.getTradePhaseList(),
-        }
-        update = 0
-        base_category_list = self.getVariationBaseCategoryList()
-        category_list_list = []
-        for base_cat in base_category_list:
-          category_list = self.getVariationCategoryList(
-                                          base_category_list=base_cat)
-          category_list_list.append(category_list)
-        cartesian_product = cartesianProduct(category_list_list)
-        # look for cells if categories are used
-        if len(category_list_list) > 0:
-          for cell_coordinates in cartesian_product:
-            cell = self.getCell(base_id=base_id, *cell_coordinates)
-            if cell is None:
-              raise ValueError("Can't find the cell corresponding to those "+\
-                  "cells coordinates : %s" % cell_coordinates)
-            tmp_movement = newTempSimulationMovement(self.getPortalObject(),
-                self_id)
-            tmp_movement.edit(
-                variation_base_category_list = cell.getVariationBaseCategoryList(),
-                variation_category_list = cell.getVariationCategoryList(),
-                price = cell.getPrice(),
-                quantity = cell.getQuantity(0.0),
-                **common_params
-                )
-            tmp_movement_list.append(tmp_movement)
-        else:
-          tmp_movement = newTempSimulationMovement(self.getPortalObject(),
-            self_id,
-            quantity = self.getQuantity(0.0),
-            price = self.getPrice(),
-            **common_params
-          )
-          tmp_movement_list.append(tmp_movement)
-      modified = 0
-      for tmp_movement in tmp_movement_list:
-        if len(self.getVariationCategoryList()) == 0 and \
-            self.getQuantity(None) is None or \
-            len(self.getVariationCategoryList()) and \
-            tmp_movement.getQuantity(None) is None:
-          # if the quantity is not defined, take it by searching all movements
-          # that used this base_amount
-          for movement in movement_list:
-            if set(base_application_list)\
-                .intersection(set(movement.getBaseContributionList())) and \
-                len(movement.getVariationCategoryList()) == 0 or \
-                set(movement.getVariationCategoryList()).intersection( \
-                set(tmp_movement.getVariationCategoryList())):
-              # at least one base application is in base contributions and
-              # if the movement have no variation category, it's the same as
-              # if he have all variation categories
-              quantity = tmp_movement.getQuantity(0.0)
-              modified = 1
-              tmp_movement.setQuantity(quantity + movement.getTotalPrice())
-        else:
-          # if the quantity is defined, use it
-          modified = 1
-          if tmp_movement.getPrice() in (0, None):
-            # if price is not defined, it the same as 100 %
-            tmp_movement.setPrice(1)
-
-        # check if slices are used
-        salary_range_list = tmp_movement.getVariationCategoryList(\
-            base_category_list='salary_range') #XXX hardcoded values
-        salary_range = len(salary_range_list) and salary_range_list[0] or None
-        if salary_range is not None:
-          # slice are used
-          model = self.getParentValue()
-          cell = model.getCell(salary_range)
+        for movement in context.getMovementList():
+          # XXX: filtering shall be in getMovementList
+          # add only movement which are input (i.e. resource use category
+          # is in the normal resource use preference list). Output will
+          # be recalculated
+          movement_resource = movement.getResourceValue()
+          if movement_resource is not None:
+            if movement_resource.getUse() in \
+                normal_resource_use_category_list:
+              movement_list.append(movement)
+
+    aggregated_amount_list = AggregatedAmountList()
+    base_application_list = self.getBaseApplicationList()
+
+    self_id = self.getParentValue().getId() + '_' + self.getId()
+
+    tmp_movement_list = [q for q in current_aggregated_amount_list \
+        if q.getReference() == self.getReference() ]
+    if len(tmp_movement_list) > 0:
+      tmp_movement_list = tmp_movement_list[:1] # list is needed in case of
+                                                # having cells
+      update = 1
+    else:
+      common_params = {
+        'causality': self.getRelativeUrl(),
+        'resource': self.getResource(),
+        'reference': self.getReference(),
+        'base_application_list': base_application_list,
+        'base_contribution_list': self.getBaseContributionList(),
+        'start_date': context.getStartDate(),
+        'stop_date': context.getStopDate(),
+        'create_line': self.isCreateLine(),
+        'trade_phase_list': self.getTradePhaseList(),
+      }
+      update = 0
+      base_category_list = self.getVariationBaseCategoryList()
+      category_list_list = []
+      for base_cat in base_category_list:
+        category_list = self.getVariationCategoryList(
+                                        base_category_list=base_cat)
+        category_list_list.append(category_list)
+      cartesian_product = cartesianProduct(category_list_list)
+      # look for cells if categories are used
+      if len(category_list_list) > 0:
+        for cell_coordinates in cartesian_product:
+          cell = self.getCell(base_id=base_id, *cell_coordinates)
           if cell is None:
             raise ValueError("Can't find the cell corresponding to those "+\
-                "cells coordinates : %s" % salary_range)
-          model_slice_min = cell.getQuantityRangeMin()
-          model_slice_max = cell.getQuantityRangeMax()
-          base_application = tmp_movement.getQuantity(0.0)
-          if base_application-model_slice_min>0:
-            if base_application <= model_slice_max:
-              tmp_movement.setQuantity(base_application-model_slice_min)
-            elif model_slice_max:
-              tmp_movement.setQuantity(model_slice_max-model_slice_min)
-
-        if not update and modified:
-          # no movements were updated, but something was modified, so new
-          # movement appeared
-          aggregated_amount_list.append(tmp_movement)
-
-      return aggregated_amount_list
+                "cells coordinates : %s" % cell_coordinates)
+          tmp_movement = newTempSimulationMovement(self.getPortalObject(),
+              self_id)
+          tmp_movement.edit(
+              variation_base_category_list = cell.getVariationBaseCategoryList(),
+              variation_category_list = cell.getVariationCategoryList(),
+              price = cell.getPrice(),
+              quantity = cell.getQuantity(0.0),
+              **common_params
+              )
+          tmp_movement_list.append(tmp_movement)
+      else:
+        tmp_movement = newTempSimulationMovement(self.getPortalObject(),
+          self_id,
+          quantity = self.getQuantity(0.0),
+          price = self.getPrice(),
+          **common_params
+        )
+        tmp_movement_list.append(tmp_movement)
+    modified = 0
+    for tmp_movement in tmp_movement_list:
+      if len(self.getVariationCategoryList()) == 0 and \
+          self.getQuantity(None) is None or \
+          len(self.getVariationCategoryList()) and \
+          tmp_movement.getQuantity(None) is None:
+        # if the quantity is not defined, take it by searching all movements
+        # that used this base_amount
+        for movement in movement_list:
+          if set(base_application_list)\
+              .intersection(set(movement.getBaseContributionList())) and \
+              len(movement.getVariationCategoryList()) == 0 or \
+              set(movement.getVariationCategoryList()).intersection( \
+              set(tmp_movement.getVariationCategoryList())):
+            # at least one base application is in base contributions and
+            # if the movement have no variation category, it's the same as
+            # if he have all variation categories
+            quantity = tmp_movement.getQuantity(0.0)
+            modified = 1
+            tmp_movement.setQuantity(quantity + movement.getTotalPrice())
+      else:
+        # if the quantity is defined, use it
+        modified = 1
+        if tmp_movement.getPrice() in (0, None):
+          # if price is not defined, it the same as 100 %
+          tmp_movement.setPrice(1)
+
+      # check if slices are used
+      salary_range_list = tmp_movement.getVariationCategoryList(\
+          base_category_list='salary_range') #XXX hardcoded values
+      salary_range = len(salary_range_list) and salary_range_list[0] or None
+      if salary_range is not None:
+        # slice are used
+        model = self.getParentValue()
+        cell = model.getCell(salary_range)
+        if cell is None:
+          raise ValueError("Can't find the cell corresponding to those "+\
+              "cells coordinates : %s" % salary_range)
+        model_slice_min = cell.getQuantityRangeMin()
+        model_slice_max = cell.getQuantityRangeMax()
+        base_application = tmp_movement.getQuantity(0.0)
+        if base_application-model_slice_min>0:
+          if base_application <= model_slice_max:
+            tmp_movement.setQuantity(base_application-model_slice_min)
+          elif model_slice_max:
+            tmp_movement.setQuantity(model_slice_max-model_slice_min)
+
+      if not update and modified:
+        # no movements were updated, but something was modified, so new
+        # movement appeared
+        aggregated_amount_list.append(tmp_movement)
+
+    return aggregated_amount_list




More information about the Erp5-report mailing list