[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