[FIX] calendar: Improve get_attendee_detail perf

From 14 seconds to 11.4 on odoo.com for all events

X-original-commit: 3a145216a6a6fb259c5afef6175669c8a65ba39f
This commit is contained in:
Yannick Tivisse
2022-03-30 17:04:55 +02:00
parent bcdbba20f9
commit 50673f0346
+7 -3
View File
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from collections import defaultdict
from datetime import datetime
from odoo import api, fields, models
@@ -61,10 +62,13 @@ class Partner(models.Model):
"""
attendees_details = []
meetings = self.env['calendar.event'].browse(meeting_ids)
meetings_attendees = meetings.mapped('attendee_ids')
all_attendees = meetings.attendee_ids
attendees_by_partner = defaultdict(lambda: self.env['calendar.attendee'])
for attendee in all_attendees:
attendees_by_partner[attendee.partner_id.id] += attendee
for partner in self:
partner_info = partner.name_get()[0]
for attendee in meetings_attendees.filtered(lambda att: att.partner_id == partner):
partner_info = partner.display_name
for attendee in attendees_by_partner[partner.id]:
attendee_is_organizer = self.env.user == attendee.event_id.user_id and attendee.partner_id == self.env.user.partner_id
attendees_details.append({
'id': partner_info[0],