[FIX] mail: avoid unbatched read of activity's deadline
__getitem__() of BaseModel, reset the prefetch set of the recordset. Fix _compute_activity_date_deadline, to batched the reading of activity's deadline. closes odoo/odoo#154860 X-original-commit: ef7226aaa2f0ad135133fe27bdf1414b7ebf2a92 Signed-off-by: Rémy Voet (ryv) <ryv@odoo.com>
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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')
|
||||
|
||||
Reference in New Issue
Block a user