[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