[IMP] mail: allow to reschedule assigned user on automated activities
Purpose of this commit is to add possibility of rescheduling the assigned user on automated activities. Currently rescheduling is limited to updating the deadline. In some cases we want to be able to update the assigned user of an automated activity. Tests are added to avoid regression. This commit is linked to task ID 1838956 and PR #25899.
This commit is contained in:
committed by
Thibault Delavallée
parent
c7d9ddf68f
commit
36854d3bda
@@ -602,10 +602,14 @@ class MailActivityMixin(models.AbstractModel):
|
||||
activities |= self.env['mail.activity'].create(create_vals)
|
||||
return activities
|
||||
|
||||
def activity_reschedule(self, act_type_xmlids, user_id=None, date_deadline=None):
|
||||
def activity_reschedule(self, act_type_xmlids, user_id=None, date_deadline=None, new_user_id=None):
|
||||
""" Reschedule some automated activities. Activities to reschedule are
|
||||
selected based on type xml ids and optionally by user. Purpose is to be
|
||||
able to change the deadline, not anything else currently. """
|
||||
able to
|
||||
|
||||
* update the deadline to date_deadline;
|
||||
* update the responsible to new_user_id;
|
||||
"""
|
||||
if self.env.context.get('mail_activity_automation_skip'):
|
||||
return False
|
||||
|
||||
@@ -622,9 +626,12 @@ class MailActivityMixin(models.AbstractModel):
|
||||
domain = ['&'] + domain + [('user_id', '=', user_id)]
|
||||
activities = self.env['mail.activity'].search(domain)
|
||||
if activities:
|
||||
activities.write({
|
||||
'date_deadline': date_deadline,
|
||||
})
|
||||
write_vals = {}
|
||||
if date_deadline:
|
||||
write_vals['date_deadline'] = date_deadline
|
||||
if new_user_id:
|
||||
write_vals['user_id'] = new_user_id
|
||||
activities.write(write_vals)
|
||||
return activities
|
||||
|
||||
def activity_feedback(self, act_type_xmlids, user_id=None, feedback=None):
|
||||
|
||||
@@ -157,6 +157,26 @@ class TestMailActivity(BaseFunctionalTest):
|
||||
self.assertEqual(rec.active, True)
|
||||
self.assertEqual(rec.activity_ids, self.env['mail.activity'])
|
||||
|
||||
def test_activity_mixin_reschedule_user(self):
|
||||
rec = self.test_record.sudo(self.user_employee)
|
||||
rec.activity_schedule(
|
||||
'test_mail.mail_act_test_todo',
|
||||
user_id=self.user_admin.id)
|
||||
self.assertEqual(rec.activity_ids[0].user_id, self.user_admin)
|
||||
|
||||
# reschedule its own should not alter other's activities
|
||||
rec.activity_reschedule(
|
||||
['test_mail.mail_act_test_todo'],
|
||||
user_id=self.user_employee.id,
|
||||
new_user_id=self.user_employee.id)
|
||||
self.assertEqual(rec.activity_ids[0].user_id, self.user_admin)
|
||||
|
||||
rec.activity_reschedule(
|
||||
['test_mail.mail_act_test_todo'],
|
||||
user_id=self.user_admin.id,
|
||||
new_user_id=self.user_employee.id)
|
||||
self.assertEqual(rec.activity_ids[0].user_id, self.user_employee)
|
||||
|
||||
def test_activity_notify_other_user(self):
|
||||
self.user_admin.notification_type = 'email'
|
||||
rec = self.test_record.sudo(self.user_employee)
|
||||
|
||||
Reference in New Issue
Block a user