From c785373db164325c08d0cae38bbdccbc7736c11d Mon Sep 17 00:00:00 2001 From: David Beguin Date: Tue, 19 Nov 2019 13:42:48 +0000 Subject: [PATCH] [FIX] website: fix visitor _compute_time_statistics This commit fixes the visitor's time_statistics computation. When creating a new visitor, last connection datetime is not set, so it's not retrieved in the search_read and crash at search_read_result[visitor.id]. This fix also speeds up and simplifies the time_statistics computation. As time_connection_datetime is always set (for already created visitor) and in the depends, no need to read values before looping, the data is already fetched in memory. We can then use directly the value for each visitor in self. Task ID: 2120464 PR #40199 closes odoo/odoo#43780 X-original-commit: 1f0c9f272ea5b6b7b891fcb8d00eb81e7fe33f81 Signed-off-by: Thibault Delavallee (tde) --- addons/website/models/website_visitor.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/addons/website/models/website_visitor.py b/addons/website/models/website_visitor.py index 94b9ebc9d26..cc78d04de88 100644 --- a/addons/website/models/website_visitor.py +++ b/addons/website/models/website_visitor.py @@ -117,13 +117,9 @@ class WebsiteVisitor(models.Model): @api.depends('last_connection_datetime') def _compute_time_statistics(self): - results = self.env['website.visitor'].with_context(active_test=False).search_read([('id', 'in', self.ids)], ['id', 'last_connection_datetime']) - mapped_data = {result['id']: result['last_connection_datetime'] for result in results} - for visitor in self: - last_connection_date = mapped_data[visitor.id] - visitor.time_since_last_action = _format_time_ago(self.env, (datetime.now() - last_connection_date)) - visitor.is_connected = (datetime.now() - last_connection_date) < timedelta(minutes=5) + visitor.time_since_last_action = _format_time_ago(self.env, (datetime.now() - visitor.last_connection_datetime)) + visitor.is_connected = (datetime.now() - visitor.last_connection_datetime) < timedelta(minutes=5) def _prepare_visitor_send_mail_values(self): if self.partner_id.email: