diff options
| author | David Beguin <dbe@odoo.com> | 2020-09-04 14:04:10 +0000 |
|---|---|---|
| committer | David Beguin <dbe@odoo.com> | 2020-10-08 09:13:58 +0000 |
| commit | 3d9a2de3575777c87327691319d89f9de6b8eada (patch) | |
| tree | ff3a7fe870ff20ac55ce2188a412b8efdbd376d0 /addons/website/models | |
| parent | 6d6e48f34f850fa533ce00532ada0e3464c8144b (diff) | |
[FIX] website: get visitor tz directly from cookie
Since tz is now (from 6eb4762fee20a158023d774a90e7ee90c2cacec5) added to the client cookie,
visitor timezone can directly be set when creating the visitor, using the
request.
Jstz can be removed as even for module in ENT that used this lib,
we can get the timezone using Intl lib instead.
This will also reduce the number of request made only to get visitor's
timezone.
This commit reverts part of 17e84025239ed78716ed5d5d92c0ee0e10fbfb29
Linked ENT PR: 12963
Task ID: 2333825
closes odoo/odoo#57103
Related: odoo/enterprise#12963
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
Diffstat (limited to 'addons/website/models')
| -rw-r--r-- | addons/website/models/website_visitor.py | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/addons/website/models/website_visitor.py b/addons/website/models/website_visitor.py index b4950ae9aa6..223353fa7d9 100644 --- a/addons/website/models/website_visitor.py +++ b/addons/website/models/website_visitor.py @@ -3,6 +3,7 @@ from datetime import datetime, timedelta import uuid +import pytz from odoo import fields, models, api, _ from odoo.addons.base.models.res_partner import _tz_get @@ -185,7 +186,11 @@ class WebsiteVisitor(models.Model): # Cookie associated to a Partner visitor = Visitor - if force_create and not visitor: + if visitor and not visitor.timezone: + tz = self._get_visitor_timezone() + if tz: + visitor.timezone = tz + if not visitor and force_create: visitor = self._create_visitor() return visitor @@ -235,6 +240,11 @@ class WebsiteVisitor(models.Model): 'country_id': country_id, 'website_id': request.website.id, } + + tz = self._get_visitor_timezone() + if tz: + vals['timezone'] = tz + if not self.env.user._is_public(): vals['partner_id'] = self.env.user.partner_id.id vals['name'] = self.env.user.partner_id.name @@ -298,3 +308,12 @@ class WebsiteVisitor(models.Model): self.env.cr.execute(query, (date_now, self.id), log_exceptions=False) except Exception: pass + + def _get_visitor_timezone(self): + tz = request.httprequest.cookies.get('tz') if request else None + if tz in pytz.all_timezones: + return tz + elif not self.env.user._is_public(): + return self.env.user.tz + else: + return None |
