From 2825af7623de2b2a32d6ce71ebc02d99fa83518f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Theys?= Date: Mon, 16 May 2022 18:39:08 +0000 Subject: [PATCH] [IMP] mail, test_discuss_full: only return ids of public partners Other data are not actually used. This will improve performance a bit (less queries, less data to return) until the need to return this list goes away (it requires a bigger refactoring). task-2847983 closes odoo/odoo#91576 X-original-commit: 61e472aa35ac825553144fd9a80fbf62e3e8b5e1 Signed-off-by: Louis Wicket (wil) --- addons/mail/models/mail_guest.py | 2 +- addons/mail/models/res_users.py | 2 +- .../static/src/models/messaging_initializer.js | 11 +++-------- addons/mail/static/tests/helpers/mock_server.js | 2 +- addons/test_discuss_full/tests/test_performance.py | 14 +++----------- 5 files changed, 9 insertions(+), 22 deletions(-) diff --git a/addons/mail/models/mail_guest.py b/addons/mail/models/mail_guest.py index c1ba4b95779..6ef3a155af3 100644 --- a/addons/mail/models/mail_guest.py +++ b/addons/mail/models/mail_guest.py @@ -102,7 +102,7 @@ class MailGuest(models.Model): 'id': partner_root.id, 'name': partner_root.name, }, - 'public_partners': [], + 'publicPartners': [], 'shortcodes': [], 'starred_counter': False, } diff --git a/addons/mail/models/res_users.py b/addons/mail/models/res_users.py index 8a4a02309f5..5eaa0148018 100644 --- a/addons/mail/models/res_users.py +++ b/addons/mail/models/res_users.py @@ -154,7 +154,7 @@ class Users(models.Model): 'menu_id': self.env['ir.model.data']._xmlid_to_res_id('mail.menu_root_discuss'), 'needaction_inbox_counter': self.partner_id._get_needaction_count(), 'partner_root': partner_root.sudo().mail_partner_format().get(partner_root), - 'public_partners': list(self.env.ref('base.group_public').sudo().with_context(active_test=False).users.partner_id.mail_partner_format().values()), + 'publicPartners': [('insert', [{'id': p.id} for p in self.env.ref('base.group_public').sudo().with_context(active_test=False).users.partner_id])], 'shortcodes': self.env['mail.shortcode'].sudo().search_read([], ['source', 'substitution']), 'starred_counter': self.partner_id._get_starred_count(), } diff --git a/addons/mail/static/src/models/messaging_initializer.js b/addons/mail/static/src/models/messaging_initializer.js index 3b971063a2d..6c34fad7832 100644 --- a/addons/mail/static/src/models/messaging_initializer.js +++ b/addons/mail/static/src/models/messaging_initializer.js @@ -65,7 +65,7 @@ registerModel({ * @param {Object} param0.current_user_settings * @param {integer} [param0.needaction_inbox_counter=0] * @param {Object} param0.partner_root - * @param {Object[]} param0.public_partners + * @param {Array[]} param0.publicPartners * @param {Object[]} [param0.shortcodes=[]] * @param {integer} [param0.starred_counter=0] */ @@ -80,7 +80,7 @@ registerModel({ menu_id, needaction_inbox_counter = 0, partner_root, - public_partners, + publicPartners, shortcodes = [], starred_counter = 0 }) { @@ -91,8 +91,8 @@ registerModel({ current_partner, current_user_id, partner_root, - public_partners, }); + this.messaging.update({ publicPartners }); // mailboxes after partners and before other initializers that might // manipulate threads or messages this._initMailboxes({ @@ -279,14 +279,12 @@ registerModel({ * @param {Object} current_partner * @param {integer} current_user_id * @param {Object} partner_root - * @param {Object[]} [public_partners=[]] */ _initPartners({ currentGuest, current_partner, current_user_id: currentUserId, partner_root, - public_partners = [], }) { if (currentGuest) { this.messaging.update({ currentGuest: insert(currentGuest) }); @@ -300,9 +298,6 @@ registerModel({ } this.messaging.update({ partnerRoot: insert(this.messaging.models['Partner'].convertData(partner_root)), - publicPartners: insert(public_partners.map( - publicPartner => this.messaging.models['Partner'].convertData(publicPartner) - )), }); }, /** diff --git a/addons/mail/static/tests/helpers/mock_server.js b/addons/mail/static/tests/helpers/mock_server.js index 72b78722633..9a6285afb3e 100644 --- a/addons/mail/static/tests/helpers/mock_server.js +++ b/addons/mail/static/tests/helpers/mock_server.js @@ -2459,7 +2459,7 @@ MockServer.include({ menu_id: false, // not useful in QUnit tests needaction_inbox_counter: this._mockResPartner_GetNeedactionCount(user.partner_id), partner_root: this._mockResPartnerMailPartnerFormat(this.partnerRootId).get(this.partnerRootId), - public_partners: [...this._mockResPartnerMailPartnerFormat(this.publicPartnerId).values()], + publicPartners: [['insert', [{ 'id': this.publicPartnerId }]]], shortcodes: this.pyEnv['mail.shortcode'].searchRead([], { fields: ['source', 'substitution'] }), starred_counter: this.getRecords('mail.message', [['starred_partner_ids', 'in', user.partner_id]]).length, }; diff --git a/addons/test_discuss_full/tests/test_performance.py b/addons/test_discuss_full/tests/test_performance.py index ac2b38e40e2..b5dc18418c3 100644 --- a/addons/test_discuss_full/tests/test_performance.py +++ b/addons/test_discuss_full/tests/test_performance.py @@ -100,7 +100,7 @@ class TestDiscussFullPerformance(TransactionCase): self.maxDiff = None self.users[0].flush() self.users[0].invalidate_cache() - with self.assertQueryCount(emp=85): # 84 ent + with self.assertQueryCount(emp=82): init_messaging = self.users[0].with_user(self.users[0])._init_messaging() self.assertEqual(init_messaging, { @@ -756,17 +756,9 @@ class TestDiscussFullPerformance(TransactionCase): 'out_of_office_date_end': False, 'user_id': False, }, - 'public_partners': [{ - 'active': False, - 'display_name': 'Public user', - 'email': False, + 'publicPartners': [('insert', [{ 'id': self.env.ref('base.public_partner').id, - 'im_status': 'im_partner', - 'is_internal_user': False, - 'name': 'Public user', - 'out_of_office_date_end': False, - 'user_id': self.env.ref('base.public_user').id, - }], + }])], 'currentGuest': False, 'current_partner': { 'active': True,