def getExplanationMessage(self, simulation_movement): """ Returns the HTML message that describes the detail of the divergence. """ divergence_message = self.explain(simulation_movement) if divergence_message is None: return None # XXX explanation message should be provided by each class, each # portal type or each document. introduction_message = 'On <a href="${decision_url}">${decision_type} ${decision_title}</a> '\ 'of <a href="${delivery_url}">${delivery_title}</a> : ' decision_movement = self.getPortalObject().unrestrictedTraverse( divergence_message.getProperty('object_relative_url')) decision_delivery = decision_movement.getRootDeliveryValue() introduction_mapping = { 'decision_url':decision_movement.absolute_url(), 'decision_type':decision_movement.getTranslatedPortalType(), '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. # For example, we might want to show a partial view of # the original order associated with partial view of # related packing list } message = divergence_message.getProperty('message') mapping = dict([(x, h(y)) for (x,y) in divergence_message.getProperty('mapping', {}).items()]) return str(Message(domain='erp5_ui', message=introduction_message, mapping=introduction_mapping)) \ + str(Message(domain='erp5_ui', message=message, mapping=mapping))
def getExplanationMessage(self, simulation_movement): """ Returns the HTML message that describes the detail of the divergence. """ divergence_message = self.explain(simulation_movement) if divergence_message is None: return None # 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_type} ${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.getRootDeliveryValue() mapping = { 'decision_url':decision_movement.absolute_url(), # TODO we need a way to map the property name to the business word, # eg. 'start_date' to 'Delivery Date' for trade etc. 'property_name':divergence_message.getProperty('tested_property'), 'decision_value':h(divergence_message.getProperty('decision_value')), 'decision_type':decision_movement.getPortalType(), '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))