diff --git a/addons/calendar/models/mail_activity_mixin.py b/addons/calendar/models/mail_activity_mixin.py index 4e2b203bc76..e0f0eaed1b0 100644 --- a/addons/calendar/models/mail_activity_mixin.py +++ b/addons/calendar/models/mail_activity_mixin.py @@ -15,4 +15,4 @@ class MailActivityMixin(models.AbstractModel): """This computes the calendar event of the next activity. It evaluates to false if there is no such event.""" for record in self: - record.activity_calendar_event_id = record.activity_ids[:1].calendar_event_id + record.activity_calendar_event_id = fields.first(record.activity_ids).calendar_event_id diff --git a/addons/mail/models/mail_activity_mixin.py b/addons/mail/models/mail_activity_mixin.py index 62f444a6c2f..b3c55903cb6 100644 --- a/addons/mail/models/mail_activity_mixin.py +++ b/addons/mail/models/mail_activity_mixin.py @@ -201,7 +201,7 @@ class MailActivityMixin(models.AbstractModel): @api.depends('activity_ids.date_deadline') def _compute_activity_date_deadline(self): for record in self: - record.activity_date_deadline = record.activity_ids[:1].date_deadline + record.activity_date_deadline = fields.first(record.activity_ids).date_deadline def _search_activity_date_deadline(self, operator, operand): if operator == '=' and not operand: diff --git a/addons/test_mail/tests/test_performance.py b/addons/test_mail/tests/test_performance.py index 64eca45c41b..7382c2a6be6 100644 --- a/addons/test_mail/tests/test_performance.py +++ b/addons/test_mail/tests/test_performance.py @@ -289,6 +289,24 @@ class TestBaseAPIPerformance(BaseMailPerformance): with self.assertQueryCount(admin=13, employee=13): activity.action_feedback(feedback='Zizisse Done !') + @warmup + def test_adv_activity_mixin_batched(self): + records = self.env['mail.test.activity'].create([{'name': 'Test'}] * 10) + MailActivity = self.env['mail.activity'].with_context({ + 'default_res_model': 'mail.test.activity', + }) + activity_type = self.env.ref('mail.mail_activity_data_todo') + + MailActivity.create([{ + 'summary': 'Test Activity', + 'res_id': record.id, + 'activity_type_id': activity_type.id, + } for record in records]) + + self.env.invalidate_all() + with self.assertQueryCount(3): + records.mapped('activity_date_deadline') + @users('admin', 'employee') @warmup @mute_logger('odoo.models.unlink')