diff options
| author | Thibault Delavallée <tde@openerp.com> | 2014-11-14 14:53:54 +0100 |
|---|---|---|
| committer | Thibault Delavallée <tde@openerp.com> | 2015-02-24 16:28:51 +0100 |
| commit | d4e9640e3428219c37115a320b4ec1e9cba2c169 (patch) | |
| tree | 9757762bce45b480b4b4f0496e38031631fef4da /addons/project | |
| parent | 3b6a7a9c42578980266ce7c1fd9bb3f665952631 (diff) | |
[REF] mail: _track update.
_track is now a method that returns the subtype to trigger in a given
tracking context. A tracking will now lead to only one subtype
being trigerred, instead of having multiple possible subtypes.
Now, one tracking leads to one message with one subtype, or without subtype
if there is none matching. This simplifies the model for future evolution of
chatter and mail.
[IMP] project, project_issue: cleaned task and issue subtypes, now having
opened for created / assigned.
Diffstat (limited to 'addons/project')
| -rw-r--r-- | addons/project/project.py | 29 | ||||
| -rw-r--r-- | addons/project/project_data.xml | 39 | ||||
| -rw-r--r-- | addons/project/tests/test_project_flow.py | 6 |
3 files changed, 29 insertions, 45 deletions
diff --git a/addons/project/project.py b/addons/project/project.py index 16ff6fc67e8..176aca004a5 100644 --- a/addons/project/project.py +++ b/addons/project/project.py @@ -612,22 +612,7 @@ class task(osv.osv): _description = "Task" _date_name = "date_start" _inherit = ['mail.thread', 'ir.needaction_mixin'] - _mail_post_access = 'read' - _track = { - 'stage_id': { - # this is only an heuristics; depending on your particular stage configuration it may not match all 'new' stages - 'project.mt_task_new': lambda self, cr, uid, obj, ctx=None: obj.stage_id and obj.stage_id.sequence <= 1, - 'project.mt_task_stage': lambda self, cr, uid, obj, ctx=None: obj.stage_id.sequence > 1, - }, - 'user_id': { - 'project.mt_task_assigned': lambda self, cr, uid, obj, ctx=None: obj.user_id and obj.user_id.id, - }, - 'kanban_state': { - 'project.mt_task_blocked': lambda self, cr, uid, obj, ctx=None: obj.kanban_state == 'blocked', - 'project.mt_task_ready': lambda self, cr, uid, obj, ctx=None: obj.kanban_state == 'done', - }, - } def _get_default_partner(self, cr, uid, context=None): project_id = self._get_default_project_id(cr, uid, context) @@ -1137,6 +1122,20 @@ class task(osv.osv): # Mail gateway # --------------------------------------------------- + def _track_subtype(self, cr, uid, ids, init_values, context=None): + record = self.browse(cr, uid, ids[0], context=context) + if 'kanban_state' in init_values and record.kanban_state == 'blocked': + return 'project.mt_task_blocked' + elif 'kanban_state' in init_values and record.kanban_state == 'done': + return 'project.mt_task_ready' + elif 'user_id' in init_values and record.user_id: # assigned -> new + return 'project.mt_task_new' + elif 'stage_id' in init_values and record.stage_id and record.stage_id.sequence <= 1: # start stage -> new + return 'project.mt_task_new' + elif 'stage_id' in init_values: + return 'project.mt_task_stage' + return super(task, self)._track_subtype(cr, uid, ids, init_values, context=context) + def message_get_reply_to(self, cr, uid, ids, context=None): """ Override to get the reply_to of the parent project. """ tasks = self.browse(cr, SUPERUSER_ID, ids, context=context) diff --git a/addons/project/project_data.xml b/addons/project/project_data.xml index 238b62cc2fc..58a787b28e9 100644 --- a/addons/project/project_data.xml +++ b/addons/project/project_data.xml @@ -62,17 +62,11 @@ <data> <!-- Task-related subtypes for messaging / Chatter --> <record id="mt_task_new" model="mail.message.subtype"> - <field name="name">Task Created</field> + <field name="name">Task Opened</field> <field name="res_model">project.task</field> <field name="default" eval="False"/> - <field name="hidden" eval="True"/> - <field name="description">Task created</field> - </record> - <record id="mt_task_assigned" model="mail.message.subtype"> - <field name="name">Task Assigned</field> - <field name="res_model">project.task</field> - <field name="default" eval="False"/> - <field name="description">Task Assigned</field> + <field name="hidden" eval="False"/> + <field name="description">Task opened</field> </record> <record id="mt_task_blocked" model="mail.message.subtype"> <field name="name">Task Blocked</field> @@ -81,10 +75,10 @@ <field name="description">Task blocked</field> </record> <record id="mt_task_ready" model="mail.message.subtype"> - <field name="name">Task Ready for Next Stage</field> + <field name="name">Task Ready</field> <field name="res_model">project.task</field> <field name="default" eval="False"/> - <field name="description">Task Ready for Next Stage</field> + <field name="description">Task ready for Next Stage</field> </record> <record id="mt_task_stage" model="mail.message.subtype"> <field name="name">Stage Changed</field> @@ -94,43 +88,36 @@ </record> <!-- Project-related subtypes for messaging / Chatter --> <record id="mt_project_task_new" model="mail.message.subtype"> - <field name="name">Task Created</field> + <field name="name">Task Opened</field> <field name="sequence">10</field> <field name="res_model">project.project</field> <field name="default" eval="False"/> <field name="parent_id" eval="ref('mt_task_new')"/> <field name="relation_field">project_id</field> </record> - <record id="mt_project_task_assigned" model="mail.message.subtype"> - <field name="name">Task Assigned</field> + <record id="mt_project_task_blocked" model="mail.message.subtype"> + <field name="name">Task Blocked</field> <field name="sequence">11</field> <field name="res_model">project.project</field> <field name="default" eval="False"/> - <field name="parent_id" eval="ref('mt_task_assigned')"/> + <field name="parent_id" eval="ref('mt_task_blocked')"/> <field name="relation_field">project_id</field> </record> - <record id="mt_project_task_blocked" model="mail.message.subtype"> - <field name="name">Task Blocked</field> + <record id="mt_project_task_ready" model="mail.message.subtype"> + <field name="name">Task Ready</field> <field name="sequence">12</field> <field name="res_model">project.project</field> - <field name="parent_id" eval="ref('mt_task_blocked')"/> + <field name="parent_id" eval="ref('mt_task_ready')"/> <field name="relation_field">project_id</field> </record> <record id="mt_project_task_stage" model="mail.message.subtype"> <field name="name">Task Stage Changed</field> <field name="sequence">13</field> <field name="res_model">project.project</field> + <field name="default" eval="False"/> <field name="parent_id" eval="ref('mt_task_stage')"/> <field name="relation_field">project_id</field> </record> - <record id="mt_project_task_ready" model="mail.message.subtype"> - <field name="name">Task Ready</field> - <field name="sequence">14</field> - <field name="res_model">project.project</field> - <field name="parent_id" eval="ref('mt_task_ready')"/> - <field name="relation_field">project_id</field> - <field name="default" eval="False" /> - </record> <!-- notify all employees of module installation --> <record model="mail.message" id="module_install_notification"> diff --git a/addons/project/tests/test_project_flow.py b/addons/project/tests/test_project_flow.py index 72aabcf189b..a1a457b03ff 100644 --- a/addons/project/tests/test_project_flow.py +++ b/addons/project/tests/test_project_flow.py @@ -146,11 +146,9 @@ class TestProjectFlow(TestProjectBase): self.assertEqual(res[0], uid, 'project: message_process: task should have been created by uid as alias_user_id is False on the alias') # Test: messages - self.assertEqual(len(task.message_ids), 3, + self.assertEqual(len(task.message_ids), 2, 'project: message_process: newly created task should have 2 messages: creation and email') - self.assertEqual(task.message_ids[2].subtype_id.name, 'Task Created', - 'project: message_process: first message of new task should have Task Created subtype') - self.assertEqual(task.message_ids[1].subtype_id.name, 'Task Assigned', + self.assertEqual(task.message_ids[1].subtype_id.name, 'Task Opened', 'project: message_process: first message of new task should have Task Created subtype') self.assertEqual(task.message_ids[0].author_id.id, self.email_partner_id, 'project: message_process: second message should be the one from Agrolait (partner failed)') |
