summaryrefslogtreecommitdiff
path: root/addons/website/models
diff options
context:
space:
mode:
authorDavid Beguin <dbe@odoo.com>2020-09-04 14:04:10 +0000
committerDavid Beguin <dbe@odoo.com>2020-10-08 09:13:58 +0000
commit3d9a2de3575777c87327691319d89f9de6b8eada (patch)
treeff3a7fe870ff20ac55ce2188a412b8efdbd376d0 /addons/website/models
parent6d6e48f34f850fa533ce00532ada0e3464c8144b (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.py21
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