From 9a8fdda8ab09e2a8394a2bf3bf7acbc349b112ad Mon Sep 17 00:00:00 2001 From: "Pierre Collinet (pic)" Date: Mon, 4 May 2020 09:18:27 +0000 Subject: [PATCH] [IMP]mail:set a default value for field Activity Type when scheduling activity purpose : Improve the efficiency of encoding a next activity by pre-filling the next activity type. Set a value by default in the field Activity Type following this rules : 1) To do 2) first in sequence for this model 3) first in sequence with no model set task-2177020 Closes #50550 Signed-off-by: Thibault Delavallee (tde) --- addons/mail/models/mail_activity.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/addons/mail/models/mail_activity.py b/addons/mail/models/mail_activity.py index ca6caf35635..a5365bc9cf9 100644 --- a/addons/mail/models/mail_activity.py +++ b/addons/mail/models/mail_activity.py @@ -119,6 +119,19 @@ class MailActivity(models.Model): res['res_model_id'] = self.env['ir.model']._get(res['res_model']).id return res + @api.model + def _default_activity_type_id(self): + ActivityType = self.env["mail.activity.type"] + activity_type_todo = self.env.ref('mail.mail_activity_data_todo', raise_if_not_found=False) + current_model_id = self.default_get(['res_model_id', 'res_model'])['res_model_id'] + if activity_type_todo and activity_type_todo.active and (activity_type_todo.res_model_id.id == current_model_id or not activity_type_todo.res_model_id): + return activity_type_todo + activity_type_model = ActivityType.search([('res_model_id', '=', current_model_id)], limit=1) + if activity_type_model: + return activity_type_model + activity_type_generic = ActivityType.search([('res_model_id','=', False)], limit=1) + return activity_type_generic + # owner res_model_id = fields.Many2one( 'ir.model', 'Document Model', @@ -133,7 +146,8 @@ class MailActivity(models.Model): # activity activity_type_id = fields.Many2one( 'mail.activity.type', string='Activity Type', - domain="['|', ('res_model_id', '=', False), ('res_model_id', '=', res_model_id)]", ondelete='restrict') + domain="['|', ('res_model_id', '=', False), ('res_model_id', '=', res_model_id)]", ondelete='restrict', + default=_default_activity_type_id) activity_category = fields.Selection(related='activity_type_id.category', readonly=True) activity_decoration = fields.Selection(related='activity_type_id.decoration_type', readonly=True) icon = fields.Char('Icon', related='activity_type_id.icon', readonly=True)