_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 --> Negotiation)
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 example 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/opportunities of this sales team and _track event.
Hope this post will help you to understand the concept of _track and track_visibility.
Cheers,
Priyesh Solanki
Most of the data posted here is not more than a copy-paste of the original data (https://www.odoo.com/es_ES/forum/how-to/developers-13/what-is-the-track-proprerty-of-mail-thread-model-used-for-1704) or, perhaps, the inverse proposition is true.
ReplyDeleteAnyway, it is quite disappointing to see that many widely used opensource projects lack of good documentation (another one: Magento), while there are projects with really good documentation (Django, SQLAlchemy, Pymarmid,... even Yii has a place here).
Being so the case, there's no excuse for Odoo community to have so crappy, faulty, deprecated, and incomplete documentation. Pleeeease! I'm a n00b @ t.erp/openerp/odoo and thanks to the lack of good docs I'm pretty lost.
This comment has been removed by the author.
ReplyDelete