Bus#
The Tryton server listens on POST
requests on the routes matching
/<database_name>/bus
and replies with JSON dictionary containing:
channel
The channel on which this message has been received.
message
A dictionary that is the message the client must handle. The specification of the message depends of its type.
All messages should at least content a unique identifier in the key
message_id
and their type in the key of the same name.
Client sending their requests on the route must be authenticated. The request must submit a JSON dictionary containing:
last_message
A value identifying the last message received by the client. This value can be
null
.channels
A list of strings denoting the channels the client is listening to.
- class trytond.bus.Bus#
Expose two methods that are used by the framework:
publish
andsubscribe
.
- classmethod Bus.publish(channel, message)#
Send a message to a specific channel.
Implemented messages are:
- classmethod Bus.subscribe(database, channels[, last_message])#
Subscribe a user client to some
channels
of messages.The
message_id
parameter defines the last message id received by the client. It defaults toNone
when not provided.
The default implementation provides an helper method to construct the response:
- classmethod Bus.create_response(channel, message)#
Create a dictionary suitable as a response from a message and a timestamp.
channel
is the channel on which the message has been received.message
is the content of the message sent to the client.
Note
The implementation relies on the fact that the order of the messages received is consistent across different trytond instances allowing to dispatch the request to any trytond server running.
Notification#
Tryton provides a shortcut to send a notification with the notify
function.
- trytond.bus.notify(title[, body[, priority[, user[, client]]]])#
Send a text message to a user’s client to be displayed using a notification popup. The meaning of
title
,body
andpriority
is defined in Notification message.If
user
is not set, the currentuser
is used. Otherwiseuser
is the user id to notify.If
client
is not set then every client of the user receives the message. Ifclient
anduser
are not set, the system send the notification to the current user client. Otherwise the notification is sent to the client whose id matchesclient
.
Notification message#
Notification messages are composed of four parts:
kind
The string
notification
.title
A string containing a one-line summary of the message.
body
A string containing a short informative message for the user. It can span multiple lines but no markup is allowed.
priority
An integer between 0 (low priority) to 3 (urgent). The notification priority on the platform supporting it.