[Erp5-report] r33748 kazuhiko - in /erp5/trunk/products/ERP5: Document/ mixin/

nobody at svn.erp5.org nobody at svn.erp5.org
Tue Mar 16 10:09:54 CET 2010


Author: kazuhiko
Date: Tue Mar 16 10:09:52 2010
New Revision: 33748

URL: http://svn.erp5.org?rev=33748&view=rev
Log:
define SolverDecision.getExplanationMessage and EquivalenceTesterMixin.getExplanationMessage that returns the HTML message of divergences.

Modified:
    erp5/trunk/products/ERP5/Document/SolverDecision.py
    erp5/trunk/products/ERP5/mixin/equivalence_tester.py

Modified: erp5/trunk/products/ERP5/Document/SolverDecision.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/SolverDecision.py?rev=33748&r1=33747&r2=33748&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/SolverDecision.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/SolverDecision.py [utf8] Tue Mar 16 10:09:52 2010
@@ -111,3 +111,19 @@
       fallback_script_id='Solver_getDefaultConfigurationPropertyDict')
 
     return method(self)
+
+  def getExplanationMessage(self, all=False):
+    """
+    Returns the HTML message that describes the detail of divergences to
+    be solved with this Solver Decision.
+    """
+    simulation_movement_list = self.getSolverRelatedValueList()
+    message_list = []
+    for tester in self.getCausalityValueList():
+      for simulation_movement in simulation_movement_list:
+        if all or len(message_list) == 0:
+          message_list.append(tester.getExplanationMessage(simulation_movement))
+        elif len(message_list) == 1:
+          # XXX it should be a link to the detailed view.
+          message_list.append('...')
+    return ''.join(message_list)

Modified: erp5/trunk/products/ERP5/mixin/equivalence_tester.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/mixin/equivalence_tester.py?rev=33748&r1=33747&r2=33748&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/mixin/equivalence_tester.py [utf8] (original)
+++ erp5/trunk/products/ERP5/mixin/equivalence_tester.py [utf8] Tue Mar 16 10:09:52 2010
@@ -30,6 +30,8 @@
 from AccessControl import ClassSecurityInfo
 from Products.ERP5Type import Permissions, interfaces
 from Products.ERP5Type.DivergenceMessage import DivergenceMessage
+from Products.ERP5Type.Message import Message
+from Products.PythonScripts.standard import html_quote as h
 
 class EquivalenceTesterMixin:
   """
@@ -154,6 +156,30 @@
     decision_movement.edit(
       **self.getUpdatablePropertyDict(prevision_movement, decision_movement))
 
+  def getExplanationMessage(self, simulation_movement):
+    """
+    Returns the HTML message that describes the detail of the
+    divergence.
+    """
+    divergence_message = self.explain(simulation_movement)
+    # XXX explanation message should be provided by each class, each
+    # portal type or each document.
+    message = '<a href="${decision_url}">${property_name} of ${decision_value} of ${decision_title}</a> of <a href="${delivery_url}">${delivery_title}</a> is different from <a href="${prevision_url}">planned ${property_name} of ${prevision_value}</a>.'
+    decision_movement = self.getPortalObject().unrestrictedTraverse(
+      divergence_message.getProperty('object_relative_url'))
+    decision_delivery = decision_movement.getDeliveryValue()
+    mapping = {
+      'decision_url':decision_movement.absolute_url(),
+      'property_name':divergence_message.getProperty('tested_property'),
+      'decision_value':h(divergence_message.getProperty('decision_value')),
+      'decision_title':h(decision_movement.getTitleOrId()),
+      'delivery_url':decision_delivery.absolute_url(),
+      'delivery_title':h(decision_delivery.getTitleOrId()),
+      'prevision_url':'#', # XXX it should be a link to the detailed view.
+      'prevision_value':h(divergence_message.getProperty('prevision_value')),
+      }
+    return str(Message(domain='erp5_ui', message=message, mapping=mapping))
+
   # Placeholder for methods to override
   def _compare(self, prevision_movement, decision_movement):
     """




More information about the Erp5-report mailing list