[Erp5-report] r21501 - /erp5/trunk/products/ERP5/MovementGroup.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed Jun 11 16:00:16 CEST 2008
Author: kazuhiko
Date: Wed Jun 11 16:00:15 2008
New Revision: 21501
URL: http://svn.erp5.org?rev=21501&view=rev
Log:
code cleanup and reduce duplicates.
Modified:
erp5/trunk/products/ERP5/MovementGroup.py
Modified: erp5/trunk/products/ERP5/MovementGroup.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/MovementGroup.py?rev=21501&r1=21500&r2=21501&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/MovementGroup.py (original)
+++ erp5/trunk/products/ERP5/MovementGroup.py Wed Jun 11 16:00:15 2008
@@ -32,7 +32,6 @@
Define in this file all classes intended to group every kind of movement
"""
-from zLOG import LOG, DEBUG
from warnings import warn
from Products.PythonScripts.Utility import allow_class
@@ -215,10 +214,21 @@
""" Group movements that comes from the same Order. """
def __init__(self,movement, **kw):
RootMovementGroup.__init__(self, movement=movement, **kw)
+ order_value = self._getOrderValue(movement)
+ if order_value is None:
+ order_relative_url = None
+ else:
+ # get the id of the enclosing delivery
+ # for this cell or line
+ order_relative_url = order_value.getRelativeUrl()
+ self.order = order_relative_url
+ self.setGroupEdit(causality_value=order_value)
+
+ def _getOrderValue(self, movement):
if hasattr(movement, 'getRootAppliedRule'):
# This is a simulation movement
order_value = movement.getRootAppliedRule().getCausalityValue(
- portal_type=movement.getPortalOrderTypeList())
+ portal_type=movement.getPortalOrderTypeList())
if order_value is None:
# In some cases (ex. DeliveryRule), there is no order
# we may consider a PackingList as the order in the OrderGroup
@@ -227,28 +237,10 @@
else:
# This is a temp movement
order_value = None
- if order_value is None:
- order_relative_url = None
- else:
- # get the id of the enclosing delivery
- # for this cell or line
- order_relative_url = order_value.getRelativeUrl()
- self.order = order_relative_url
- self.setGroupEdit(causality_value=order_value)
-
- def test(self,movement):
- if hasattr(movement, 'getRootAppliedRule'):
- order_value = movement.getRootAppliedRule().getCausalityValue(
- portal_type=movement.getPortalOrderTypeList())
-
- if order_value is None:
- # In some cases (ex. DeliveryRule), there is no order
- # we may consider a PackingList as the order in the OrderGroup
- order_value = movement.getRootAppliedRule().getCausalityValue(
- portal_type=movement.getPortalDeliveryTypeList())
- else:
- # This is a temp movement
- order_value = None
+ return order_value
+
+ def test(self,movement):
+ order_value = self._getOrderValue(movement)
if order_value is None:
order_relative_url = None
else:
@@ -379,7 +371,8 @@
RootMovementGroup.__init__(self, movement=movement, **kw)
source_list = movement.getSourceList()
destination_list = movement.getDestinationList()
- source_list.sort() ; destination_list.sort()
+ source_list.sort()
+ destination_list.sort()
self.source_list = source_list
self.destination_list = destination_list
@@ -392,7 +385,8 @@
def test(self, movement):
source_list = movement.getSourceList()
destination_list = movement.getDestinationList()
- source_list.sort() ; destination_list.sort()
+ source_list.sort()
+ destination_list.sort()
return source_list == self.source_list and \
destination_list == self.destination_list
@@ -405,7 +399,8 @@
RootMovementGroup.__init__(self, movement=movement, **kw)
source_section_list = movement.getSourceSectionList()
destination_section_list = movement.getDestinationSectionList()
- source_section_list.sort() ; destination_section_list.sort()
+ source_section_list.sort()
+ destination_section_list.sort()
self.source_section_list = source_section_list
self.destination_section_list = destination_section_list
@@ -418,7 +413,8 @@
def test(self, movement):
source_section_list = movement.getSourceSectionList()
destination_section_list = movement.getDestinationSectionList()
- source_section_list.sort() ; destination_section_list.sort()
+ source_section_list.sort()
+ destination_section_list.sort()
return source_section_list == self.source_section_list and \
destination_section_list == self.destination_section_list
@@ -457,7 +453,8 @@
RootMovementGroup.__init__(self, movement=movement, **kw)
source_administration_list = movement.getSourceAdministrationList()
destination_administration_list = movement.getDestinationAdministrationList()
- source_administration_list.sort() ; destination_administration_list.sort()
+ source_administration_list.sort()
+ destination_administration_list.sort()
self.source_administration_list = source_administration_list
self.destination_administration_list = destination_administration_list
@@ -470,7 +467,8 @@
def test(self, movement):
source_administration_list = movement.getSourceAdministrationList()
destination_administration_list = movement.getDestinationAdministrationList()
- source_administration_list.sort() ; destination_administration_list.sort()
+ source_administration_list.sort()
+ destination_administration_list.sort()
return source_administration_list == self.source_administration_list and \
destination_administration_list == self.destination_administration_list
@@ -481,7 +479,8 @@
RootMovementGroup.__init__(self, movement=movement, **kw)
source_decision_list = movement.getSourceDecisionList()
destination_decision_list = movement.getDestinationDecisionList()
- source_decision_list.sort() ; destination_decision_list.sort()
+ source_decision_list.sort()
+ destination_decision_list.sort()
self.source_decision_list = source_decision_list
self.destination_decision_list = destination_decision_list
@@ -494,7 +493,8 @@
def test(self, movement):
source_decision_list = movement.getSourceDecisionList()
destination_decision_list = movement.getDestinationDecisionList()
- source_decision_list.sort() ; destination_decision_list.sort()
+ source_decision_list.sort()
+ destination_decision_list.sort()
return source_decision_list == self.source_decision_list and \
destination_decision_list == self.destination_decision_list
@@ -508,7 +508,8 @@
RootMovementGroup.__init__(self, movement=movement, **kw)
source_trade_list = movement.getSourceTradeList()
destination_trade_list = movement.getDestinationTradeList()
- source_trade_list.sort() ; destination_trade_list.sort()
+ source_trade_list.sort()
+ destination_trade_list.sort()
self.source_trade_list = source_trade_list
self.destination_trade_list = destination_trade_list
@@ -521,7 +522,8 @@
def test(self, movement):
source_trade_list = movement.getSourceTradeList()
destination_trade_list = movement.getDestinationTradeList()
- source_trade_list.sort() ; destination_trade_list.sort()
+ source_trade_list.sort()
+ destination_trade_list.sort()
return source_trade_list == self.source_trade_list and \
destination_trade_list == self.destination_trade_list
@@ -569,7 +571,6 @@
allow_class(DateMovementGroup)
class CriterionMovementGroup(RootMovementGroup):
-
def __init__(self,movement,**kw):
RootMovementGroup.__init__(self, movement=movement, **kw)
if hasattr(movement, 'getGroupCriterion'):
@@ -587,17 +588,30 @@
allow_class(CriterionMovementGroup)
-class ResourceMovementGroup(RootMovementGroup):
+class PropertyMovementGroup(RootMovementGroup):
+ """Abstract movement group for movement that share the same value for
+ a property.
+ """
+ _property = [] # Subclasses must override this
+
+ def __init__(self, movement, **kw):
+ RootMovementGroup.__init__(self, movement=movement, **kw)
+ if self._property is PropertyMovementGroup._property :
+ raise ValueError, 'PropertyMovementGroup: property not defined'
+ assert isinstance(self._property, str)
+ prop_value = movement.getProperty(self._property)
+ self._property_dict = { self._property : prop_value }
+ self.setGroupEdit(
+ **self._property_dict
+ )
+
+ def test(self, movement) :
+ return self._property_dict[self._property] == \
+ movement.getProperty(self._property)
+
+class ResourceMovementGroup(PropertyMovementGroup):
""" Group movements that have the same resource. """
- def __init__(self, movement, **kw):
- RootMovementGroup.__init__(self, movement=movement, **kw)
- self.resource = movement.getResource()
- self.setGroupEdit(
- resource_value=movement.getResourceValue()
- )
-
- def test(self, movement):
- return movement.getResource() == self.resource
+ _property = 'resource'
allow_class(ResourceMovementGroup)
@@ -619,20 +633,14 @@
self.base_category_list = movement.getVariationBaseCategoryList()
if self.base_category_list is None:
self.base_category_list = []
-
- def test(self,movement):
- # we must have the same number of categories
- categories_identity = 0
+ self.base_category_list.sort()
+
+ def test(self,movement):
movement_base_category_list = movement.getVariationBaseCategoryList()
if movement_base_category_list is None:
movement_base_category_list = []
- if len(self.base_category_list) == len(movement_base_category_list):
- for category in movement_base_category_list:
- if not category in self.base_category_list :
- break
- else :
- categories_identity = 1
- return categories_identity
+ movement_base_category_list.sort()
+ return movement_base_category_list == self.base_category_list
allow_class(BaseVariantMovementGroup)
@@ -643,23 +651,17 @@
self.category_list = movement.getVariationCategoryList()
if self.category_list is None:
self.category_list = []
+ self.category_list.sort()
self.setGroupEdit(
variation_category_list=self.category_list
)
def test(self,movement):
- # we must have the same number of categories
- categories_identity = 0
movement_category_list = movement.getVariationCategoryList()
if movement_category_list is None:
movement_category_list = []
- if len(self.category_list) == len(movement_category_list):
- for category in movement_category_list:
- if not category in self.category_list :
- break
- else :
- categories_identity = 1
- return categories_identity
+ movement_category_list.sort()
+ return movement_category_list == self.category_list
allow_class(VariantMovementGroup)
@@ -675,14 +677,11 @@
self.category_list.sort()
def test(self,movement):
- # we must have the same number of categories
movement_category_list = list(movement.getCategoryList())
if movement_category_list is None:
movement_category_list = []
movement_category_list.sort()
- if self.category_list == movement_category_list:
- return 1
- return 0
+ return movement_category_list == self.category_list
allow_class(CategoryMovementGroup)
@@ -695,24 +694,18 @@
base_category_list=option_base_category_list)
if self.option_category_list is None:
self.option_category_list = []
+ self.option_category_list.sort()
# XXX This is very bad, but no choice today.
self.setGroupEdit(industrial_phase_list = self.option_category_list)
def test(self,movement):
- # we must have the same number of categories
- categories_identity = 0
option_base_category_list = movement.getPortalOptionBaseCategoryList()
movement_option_category_list = movement.getVariationCategoryList(
base_category_list=option_base_category_list)
if movement_option_category_list is None:
movement_option_category_list = []
- if len(self.option_category_list) == len(movement_option_category_list):
- categories_identity = 1
- for category in movement_option_category_list:
- if not category in self.option_category_list :
- categories_identity = 0
- break
- return categories_identity
+ movement_option_category_list.sort()
+ return movement_option_category_list == self.option_category_list
allow_class(OptionMovementGroup)
@@ -1038,43 +1031,15 @@
# XXX This should not be here
# I (seb) have commited this because movement groups are not
# yet configurable through the zope web interface
-class DecisionMovementGroup(RootMovementGroup):
-
- def getDecision(self,movement):
- return movement.getDecision()
-
- def __init__(self,movement,**kw):
- RootMovementGroup.__init__(self, movement=movement, **kw)
- decision = self.getDecision(movement)
- self.decision = decision
- self.setGroupEdit(
- decision=decision
- )
-
- def test(self,movement):
- return self.getDecision(movement) == self.decision
-
+class DecisionMovementGroup(PropertyMovementGroup):
+ _property = 'decision'
allow_class(DecisionMovementGroup)
# XXX This should not be here
# I (seb) have commited this because movement groups are not
# yet configurable through the zope web interface
-class BrandMovementGroup(RootMovementGroup):
-
- def getBrand(self,movement):
- return movement.getBrand()
-
- def __init__(self,movement,**kw):
- RootMovementGroup.__init__(self, movement=movement, **kw)
- brand = self.getBrand(movement)
- self.brand = brand
- self.setGroupEdit(
- brand=brand
- )
-
- def test(self,movement):
- return self.getBrand(movement) == self.brand
-
+class BrandMovementGroup(PropertyMovementGroup):
+ _property = 'brand'
allow_class(BrandMovementGroup)
class AggregateMovementGroup(RootMovementGroup):
@@ -1150,27 +1115,6 @@
allow_class(ParentExplanationCausalityMovementGroup)
-class PropertyMovementGroup(RootMovementGroup):
- """Abstract movement group for movement that share the same value for
- a property.
- """
- _property = [] # Subclasses must override this
-
- def __init__(self, movement, **kw):
- RootMovementGroup.__init__(self, movement=movement, **kw)
- if self._property is PropertyMovementGroup._property :
- raise ValueError, 'PropertyMovementGroup: property not defined'
- assert isinstance(self._property, str)
- prop_value = movement.getProperty(self._property)
- self._property_dict = { self._property : prop_value }
- self.setGroupEdit(
- **self._property_dict
- )
-
- def test(self, movement) :
- return self._property_dict[self._property] == \
- movement.getProperty(self._property)
-
class SourceMovementGroup(PropertyMovementGroup):
"""Group movements having the same source."""
_property = 'source'
More information about the Erp5-report
mailing list