[Erp5-report] r28461 - in /erp5/trunk/products/ERP5: DivergenceDecision.py __init__.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed Aug 19 13:50:31 CEST 2009
Author: luke
Date: Wed Aug 19 13:50:30 2009
New Revision: 28461
URL: http://svn.erp5.org?rev=28461&view=rev
Log:
- introduce divergence decision class to represent user decision for divergence
Added:
erp5/trunk/products/ERP5/DivergenceDecision.py
Modified:
erp5/trunk/products/ERP5/__init__.py
Added: erp5/trunk/products/ERP5/DivergenceDecision.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/DivergenceDecision.py?rev=28461&view=auto
==============================================================================
--- erp5/trunk/products/ERP5/DivergenceDecision.py (added)
+++ erp5/trunk/products/ERP5/DivergenceDecision.py [utf8] Wed Aug 19 13:50:30 2009
@@ -1,0 +1,106 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# 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 responsibility 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
+# guarantees and support are strongly advised 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 Globals import InitializeClass
+from Products.PythonScripts.Utility import allow_class
+from AccessControl import ClassSecurityInfo
+from Persistence import Persistent
+
+class DivergenceDecision(Persistent):
+ """Decision class
+
+ Represent decision took during solving divergence between reality and
+ simulation
+
+ Provides possibility to override movement's property value in case of
+ accepting decision with forcing.
+
+ Properties are two types - historical only and really used.
+
+ Historical only are for information traceability:
+
+ * delivery_solver_name
+ * target_solver_name
+
+ Really used shall impact property value of movement:
+
+ * divergence
+ * decision
+ * force_property
+
+ divergence
+ instance of DivergenceMessage
+
+ decision
+ string representing took decision:
+ * accept
+ * adopt
+ * split
+
+ delivery_solver_name
+ delivery solver used during taking decision
+
+ target_solver_name
+ target solver used during taking decision
+
+ force_property
+ If set, property on decision overrides
+
+ split_kw
+ Dictionary passed to TargetSolver in case of splitting.
+ """
+ meta_type = "DivergenceDecision"
+ security = ClassSecurityInfo()
+ security.declareObjectPublic() # FIXME need to be decided
+
+ # XXX: Is there any place to know all possible decisions?
+ ALLOWED_DECISION_TUPLE = ('accept', 'adopt', 'split')
+
+ def __repr__(self):
+ repr_str = '<%s object at 0x%x\n' % (self.__class__.__name__, id(self))
+ for prop in 'divergence', 'decision', 'delivery_solver_name', \
+ 'target_solver_name', 'force_property':
+ repr_str += '%s = %r\n' % (prop, getattr(self, prop))
+ repr_str += '>'
+ return repr_str
+
+ def __init__(self, divergence, decision, delivery_solver_name,
+ target_solver_name, force_property=False, split_kw=None):
+ self.divergence = divergence
+ self.decision = decision
+ self.delivery_solver_name = delivery_solver_name
+ self.target_solver_name = target_solver_name
+ self.force_property = force_property
+ self.split_kw = split_kw
+ if not (self.decision in self.ALLOWED_DECISION_TUPLE):
+ raise ValueError(
+ 'Decision %s is not supported' % self.decision)
+
+InitializeClass(DivergenceDecision)
+allow_class(DivergenceDecision)
Modified: erp5/trunk/products/ERP5/__init__.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/__init__.py?rev=28461&r1=28460&r2=28461&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/__init__.py [utf8] (original)
+++ erp5/trunk/products/ERP5/__init__.py [utf8] Wed Aug 19 13:50:30 2009
@@ -99,6 +99,8 @@
'WorkflowException')
ModuleSecurityInfo('Products.ERP5.Document.Image').declarePublic(
'getSizeFromImageDisplay')
+ ModuleSecurityInfo('Products.ERP5.DivergenceDecision').declarePublic(
+ 'DivergenceDecision')
# backward compatibility names
XML = None
More information about the Erp5-report
mailing list