core: sendMessage handles the extra data key 'send_only' to skip triggers, storage and echo

This commit is contained in:
souliane 2014-09-01 15:43:16 +02:00
commit be2e956c0b

View file

@ -481,7 +481,9 @@ class SAT(service.Service):
mess_data["type"] == 'chat'
mess_data["type"] == "chat" if mess_data["subject"] else "normal"
if not no_trigger:
send_only = mess_data['extra'].get('send_only', None)
if not no_trigger and not send_only:
if not self.trigger.point("sendMessage", mess_data, pre_xml_treatments, post_xml_treatments, profile):
return defer.succeed(None)
@ -494,9 +496,12 @@ class SAT(service.Service):
pre_xml_treatments.addCallback(lambda dummy: self.generateMessageXML(mess_data))
pre_xml_treatments.chainDeferred(post_xml_treatments)
post_xml_treatments.addCallback(self._sendMessageToStream, client)
post_xml_treatments.addCallback(self._storeMessage, client)
post_xml_treatments.addCallback(self.sendMessageToBridge, client)
post_xml_treatments.addErrback(cancelErrorTrap)
if send_only:
log.debug(_("Triggers, storage and echo have been inhibited by the 'send_only' parameter"))
else:
post_xml_treatments.addCallback(self._storeMessage, client)
post_xml_treatments.addCallback(self.sendMessageToBridge, client)
post_xml_treatments.addErrback(cancelErrorTrap)
pre_xml_treatments.callback(mess_data)
return pre_xml_treatments