[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