[Erp5-report] r27853 - /erp5/trunk/products/ERP5/Document/TradeCondition.py

nobody at svn.erp5.org nobody at svn.erp5.org
Wed Jul 1 16:59:05 CEST 2009


Author: fabien
Date: Wed Jul  1 16:59:03 2009
New Revision: 27853

URL: http://svn.erp5.org?rev=27853&view=rev
Log:
- change children variable name to child_list wich is better
- change conditions to not add a model that have already been visited. In this way circular dependencies are avoid and all model are visited.

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

Modified: erp5/trunk/products/ERP5/Document/TradeCondition.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/TradeCondition.py?rev=27853&r1=27852&r2=27853&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/TradeCondition.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/TradeCondition.py [utf8] Wed Jul  1 16:59:03 2009
@@ -44,8 +44,6 @@
 # probably move to Transformation (better names should be used)
 # XXX TODO: review naming of new methods
 # XXX WARNING: current API naming may change although model should be stable.
-
-class CircularException(Exception): pass
 
 class TradeCondition(Path, Transformation, XMLMatrix):
     """
@@ -138,13 +136,17 @@
             portal_type=portal_type_list)
       while len(specialise_value_list) != 0:
         specialise = specialise_value_list.pop(0)
-        children = specialise.getSpecialiseValueList(\
+        child_list = specialise.getSpecialiseValueList(\
             portal_type=portal_type_list)
-        specialise_value_list.extend(children)
-        if not set(children).intersection(visited_trade_condition_list):
-          visited_trade_condition_list.extend(children)
-        else:
-          raise CircularException
+
+        intersection = set(child_list).intersection(\
+            set(visited_trade_condition_list))
+        for model in child_list:
+          if model not in intersection:
+            # don't add model that are already been visited. This permit to
+            # visit all model tree, and to not have circular dependency
+            specialise_value_list.append(model)
+            visited_trade_condition_list.append(model)
       return visited_trade_condition_list
 
     security.declareProtected(Permissions.AccessContentsInformation,




More information about the Erp5-report mailing list