_track
on the object is used to track events related to a document (an invoice has been paid, an opportunity is won, a task is blocked, ...). Users can follow events, represented by a mail.message.subtype
, on any object.
It's different from the track_visibility
attribute that you can define on a field which is used to track changes on this field. (e.g. Stage : Proposition -> Negociation)
Both _track
and track_visibility
produces messages on the document. Your object need to inherit from mail.thread
.
If an object is inherited from 'mail.thread' then _track is used to send notifications. Therefore 'module.subtype_xml' is the related "Message Subtype". These subtypes have to be declared in XML. Here is an example:
<record id="subtype_xml" model="mail.message.subtype">
<field name="name">Relevant Fields</field>
<field name="res_model">project.issue</field>
<field name="default" eval="True"/>
<field name="description">The issue has been closed.</field>
</record>
Then whenever the field "field" is updated, all subtypes ("subtype_xml", "subtype_xml2") of this field are processed.
This means that the related method (in this example: lambda ...) is called and if the result is True, then for all users which follow this object and have checked the subtype a notification is created.
In the user preferences every user can choose whether he/she wants to be updated by email in case of new notifications.
You can also set a mail.message.subtype that depends on an other to act through a relation field. Here is an exemple from crm for Sales Teams crm.case.section
using the section_id
m2o in crm.lead
:
<record id="mt_lead_won" model="mail.message.subtype">
<field name="name">Opportunity Won</field>
<field name="res_model">crm.lead</field>
<field name="default" eval="False"/>
<field name="description">Opportunity won</field>
</record>
<record id="mt_salesteam_lead_won" model="mail.message.subtype">
<field name="name">Opportunity Won</field>
<field name="res_model">crm.case.section</field>
<field name="parent_id" eval="ref('mt_lead_won')"/>
<field name="relation_field">section_id</field>
</record>
This allows a user to follow all "Opportunities Won" that are in a specific sales team. The user follow the event "Opportunity Won" on a sales team and he will become automatically follower of all leads/oppotunities of this sales team and _track event.