[IMP] mail: add default values coming from activity types when scheduling activities

Purpose of the commit is that in some cases people would like to add a
default user and a default description on their activity types. Those
default values will be propagated to created activities.

This commit adds fields to set the default description and default user on
activity type and propagate them through the various scheduling methods as
default values when the user did not give specific one.

Other usability improvements
* rename "Category" into "Action to Perform";
* change 'Other' value to 'None';
That way it is clearer that standard activities perform no action.

Related to task 1929742

closes odoo/odoo#30511

Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
This commit is contained in:
Jinal Patel
2019-05-10 08:31:31 +00:00
committed by Thibault Delavallée
parent 563eec5ece
commit 356e04a06d
2 changed files with 13 additions and 4 deletions
+9 -4
View File
@@ -69,10 +69,12 @@ class MailActivityType(models.Model):
domain="['|', ('res_model_id', '=', False), ('res_model_id', '=', res_model_id)]",
string='Preceding Activities')
category = fields.Selection([
('default', 'Standard'), ('upload_file', 'Upload Document')
], default='default', string='Category',
help='Categories may trigger specific behavior like opening calendar view or automatically mark as done when a document is uploaded')
('default', 'None'), ('upload_file', 'Upload Document')
], default='default', string='Action to Perform',
help='Actions may trigger specific behavior like opening calendar view or automatically mark as done when a document is uploaded')
mail_template_ids = fields.Many2many('mail.template', string='Email templates')
default_user_id = fields.Many2one("res.users", string="Default User")
default_description = fields.Html(string="Default Description", translate=True)
#Fields for display purpose only
initial_res_model_id = fields.Many2one('ir.model', 'Initial model', compute="_compute_initial_res_model_id", store=False,
@@ -216,6 +218,8 @@ class MailActivity(models.Model):
if self.activity_type_id.delay_from == 'previous_activity' and 'activity_previous_deadline' in self.env.context:
base = fields.Date.from_string(self.env.context.get('activity_previous_deadline'))
self.date_deadline = base + relativedelta(**{self.activity_type_id.delay_unit: self.activity_type_id.delay_count})
self.user_id = self.activity_type_id.default_user_id or self.env.user
self.note = self.activity_type_id.default_description
@api.onchange('recommended_activity_type_id')
def _onchange_recommended_activity_type_id(self):
@@ -706,10 +710,11 @@ class MailActivityMixin(models.AbstractModel):
'activity_type_id': activity_type.id,
'summary': summary or activity_type.summary,
'automated': True,
'note': note,
'note': note or activity_type.default_description,
'date_deadline': date_deadline,
'res_model_id': model_id,
'res_id': record.id,
'user_id': act_values.get('user_id') or activity_type.default_user_id.id or self.env.uid
}
create_vals.update(act_values)
activities |= self.env['mail.activity'].create(create_vals)
@@ -32,6 +32,7 @@
</div>
<field name="delay_from"/>
</div>
<field name="default_user_id" widget="selection"/>
</group>
<group name="activity_planning">
<field name="force_next"/>
@@ -43,6 +44,9 @@
attrs="{'invisible': [('res_model_id', '=', False)]}"
context="{'default_model_id': res_model_id}"/>
</group>
<group>
<field name="default_description"/>
</group>
</group>
<p class="alert alert-info" role="alert" attrs="{'invisible': [('res_model_change', '=', False)]}">Modifying the model can have an impact on existing activities using this activity type, be careful.</p>
</sheet>