[IMP] *: request.session.geoip -> request.geoip
Commit "[IMP] core: don't save visitor default session" moved the geoip from the session to the request with a deprecation warning. This commit adapts the remaining modules to use `request.geoip` instead of `request.session.geoip`. Geoip is always set on the request but it can be an empty dictionnary in case the geolocalization failed. closes odoo/odoo#86015 Task: 2789035 Related: odoo/enterprise#25192 Signed-off-by: Julien Castiaux <juc@odoo.com>
This commit is contained in:
@@ -88,7 +88,7 @@ class Users(models.Model):
|
||||
template = self.env.ref('auth_totp_mail_enforce.mail_template_totp_mail_code').sudo()
|
||||
context = {}
|
||||
if request:
|
||||
geoip = request.session.geoip
|
||||
geoip = request.geoip
|
||||
device = request.httprequest.user_agent.platform
|
||||
browser = request.httprequest.user_agent.browser
|
||||
context.update({
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import http, tools, _
|
||||
@@ -52,7 +51,7 @@ class LivechatController(http.Controller):
|
||||
rule = {}
|
||||
# find the country from the request
|
||||
country_id = False
|
||||
country_code = request.session.geoip.get('country_code') if request.session.geoip else False
|
||||
country_code = request.geoip.get('country_code')
|
||||
if country_code:
|
||||
country_id = request.env['res.country'].sudo().search([('code', '=', country_code)], limit=1).id
|
||||
# extract url
|
||||
@@ -85,9 +84,9 @@ class LivechatController(http.Controller):
|
||||
country_id = request.env.user.country_id.id
|
||||
else:
|
||||
# if geoip, add the country name to the anonymous name
|
||||
if request.session.geoip:
|
||||
if request.geoip:
|
||||
# get the country of the anonymous person, if any
|
||||
country_code = request.session.geoip.get('country_code', "")
|
||||
country_code = request.geoip.get('country_code', "")
|
||||
country = request.env['res.country'].sudo().search([('code', '=', country_code)], limit=1) if country_code else None
|
||||
if country:
|
||||
country_id = country.id
|
||||
|
||||
@@ -12,8 +12,7 @@ class LinkTracker(http.Controller):
|
||||
@http.route('/r/<string:code>', type='http', auth='public', website=True)
|
||||
def full_url_redirect(self, code, **post):
|
||||
if not request.env['ir.http'].is_a_bot():
|
||||
country_code = request.session.geoip and request.session.geoip.get(
|
||||
'country_code') or False
|
||||
country_code = request.geoip.get('country_code')
|
||||
request.env['link.tracker.click'].sudo().add_click(
|
||||
code,
|
||||
ip=request.httprequest.remote_addr,
|
||||
|
||||
@@ -97,7 +97,7 @@ class DiscussController(http.Controller):
|
||||
if channel_sudo.public == 'groups':
|
||||
raise NotFound()
|
||||
guest = channel_sudo.env['mail.guest'].create({
|
||||
'country_id': channel_sudo.env['res.country'].search([('code', '=', request.session.get('geoip', {}).get('country_code'))], limit=1).id,
|
||||
'country_id': channel_sudo.env['res.country'].search([('code', '=', request.geoip.get('country_code'))], limit=1).id,
|
||||
'lang': get_lang(channel_sudo.env).code,
|
||||
'name': _("Guest"),
|
||||
'timezone': channel_sudo.env['mail.guest']._get_timezone_from_request(request),
|
||||
|
||||
@@ -138,7 +138,7 @@ class MassMailController(http.Controller):
|
||||
def full_url_redirect(self, code, mailing_trace_id, **post):
|
||||
# don't assume geoip is set, it is part of the website module
|
||||
# which mass_mailing doesn't depend on
|
||||
country_code = request.session.get('geoip', False) and request.session.geoip.get('country_code', False)
|
||||
country_code = request.geoip.get('country_code')
|
||||
|
||||
request.env['link.tracker.click'].sudo().add_click(
|
||||
code,
|
||||
|
||||
@@ -39,7 +39,7 @@ class MailingSMSController(http.Controller):
|
||||
check_res = self._check_trace(mailing_id, trace_code)
|
||||
if not check_res.get('trace'):
|
||||
return request.redirect('/web')
|
||||
country_code = request.session.get('geoip', False) and request.session.geoip.get('country_code', False) if request.session.get('geoip') else None
|
||||
country_code = request.geoip.get('country_code')
|
||||
# parse and validate number
|
||||
sms_number = post.get('sms_number', '').strip(' ')
|
||||
sanitize_res = phone_validation.phone_sanitize_numbers([sms_number], country_code, None)[sms_number]
|
||||
@@ -86,9 +86,7 @@ class MailingSMSController(http.Controller):
|
||||
|
||||
@http.route('/r/<string:code>/s/<int:sms_sms_id>', type='http', auth="public")
|
||||
def sms_short_link_redirect(self, code, sms_sms_id, **post):
|
||||
# don't assume geoip is set, it is part of the website module
|
||||
# which mass_mailing doesn't depend on
|
||||
country_code = request.session.get('geoip', False) and request.session.geoip.get('country_code', False)
|
||||
country_code = request.geoip.get('country_code')
|
||||
if sms_sms_id:
|
||||
trace_id = request.env['mailing.trace'].sudo().search([('sms_sms_id_int', '=', int(sms_sms_id))]).id
|
||||
else:
|
||||
|
||||
@@ -187,7 +187,7 @@ class Http(models.AbstractModel):
|
||||
|
||||
if not request.context.get('tz'):
|
||||
with contextlib.suppress(pytz.UnknownTimeZoneError):
|
||||
tz = request.session.get('geoip', {}).get('time_zone', '')
|
||||
tz = request.geoip.get('time_zone', '')
|
||||
request.update_context(tz=pytz.timezone(tz).zone)
|
||||
|
||||
website = request.env['website'].get_current_website()
|
||||
@@ -430,7 +430,7 @@ class Http(models.AbstractModel):
|
||||
@api.model
|
||||
def get_frontend_session_info(self):
|
||||
session_info = super(Http, self).get_frontend_session_info()
|
||||
geoip_country_code = request.session.get('geoip', {}).get('country_code')
|
||||
geoip_country_code = request.geoip.get('country_code')
|
||||
geoip_phone_code = request.env['res.country']._phone_code_for(geoip_country_code) if geoip_country_code else None
|
||||
session_info.update({
|
||||
'is_website_user': request.env.user.id == request.website.user_id.id,
|
||||
|
||||
@@ -930,7 +930,7 @@ class Website(models.Model):
|
||||
# The format of `httprequest.host` is `domain:port`
|
||||
domain_name = request and request.httprequest.host or ''
|
||||
|
||||
country = request.session.geoip.get('country_code') if request and 'geoip' in request.session else False
|
||||
country = request and request.geoip.get('country_code')
|
||||
country_id = False
|
||||
if country:
|
||||
country_id = self.env['res.country'].search([('code', '=', country)], limit=1).id
|
||||
|
||||
@@ -235,7 +235,7 @@ class Page(models.Model):
|
||||
# It is the only way for end user to not use cache via expr.
|
||||
# E.g (None if 'token' in request.params else 1,) will bypass cache_time
|
||||
cache_key = (req.website.id, req.lang, req.httprequest.path)
|
||||
if self.cache_key_expr: # e.g. (request.session.geoip.get('country_code'),)
|
||||
if self.cache_key_expr: # e.g. (request.geoip.get('country_code'),)
|
||||
cache_key += safe_eval(self.cache_key_expr, {'request': req})
|
||||
return cache_key
|
||||
|
||||
|
||||
@@ -255,7 +255,7 @@ class WebsiteVisitor(models.Model):
|
||||
|
||||
def _create_visitor(self):
|
||||
""" Create a visitor. Tracking is added after the visitor has been created."""
|
||||
country_code = request.session.get('geoip', {}).get('country_code', False)
|
||||
country_code = request.geoip.get('country_code')
|
||||
country_id = request.env['res.country'].sudo().search([('code', '=', country_code)], limit=1).id if country_code else False
|
||||
vals = {
|
||||
'lang_id': request.lang.id,
|
||||
|
||||
@@ -1142,7 +1142,7 @@
|
||||
<we-button data-select-data-attribute="conditional" data-select-class="o_snippet_invisible" data-name="visibility_conditional">Conditionally</we-button>
|
||||
</we-select>
|
||||
|
||||
<t t-if="request.session.get('geoip', {}).get('country_code')">
|
||||
<t t-if="request.geoip.get('country_code')">
|
||||
<t t-call="website.snippet_options_conditional_visibility">
|
||||
<t t-set="option_name">⌙ Country</t>
|
||||
<t t-set="attribute_rule" t-valuef="visibilityValueCountryRule"/>
|
||||
|
||||
@@ -16,7 +16,7 @@ class WebsiteForm(form.WebsiteForm):
|
||||
country = visitor_partner.country_id or request.env.company.country_id
|
||||
if country:
|
||||
return country
|
||||
country_code = request.session.geoip and request.session.geoip.get('country_code') or False
|
||||
country_code = request.geoip.get('country_code')
|
||||
if country_code:
|
||||
return request.env['res.country'].sudo().search([('code', '=', country_code)], limit=1)
|
||||
return request.env['res.country']
|
||||
@@ -55,8 +55,8 @@ class WebsiteForm(form.WebsiteForm):
|
||||
request.params.update({phone_field: fmt_number})
|
||||
|
||||
if model_name == 'crm.lead' and not request.params.get('state_id'):
|
||||
geoip_country_code = request.session.get('geoip', {}).get('country_code')
|
||||
geoip_state_code = request.session.get('geoip', {}).get('region')
|
||||
geoip_country_code = request.geoip.get('country_code')
|
||||
geoip_state_code = request.geoip.get('region')
|
||||
if geoip_country_code and geoip_state_code:
|
||||
state = request.env['res.country.state'].search([('code', '=', geoip_state_code), ('country_id.code', '=', geoip_country_code)])
|
||||
if state:
|
||||
|
||||
@@ -20,8 +20,8 @@ class IrHttp(models.AbstractModel):
|
||||
# We are avoiding to create a reveal_view if a lead is already
|
||||
# created from another module, e.g. website_form
|
||||
if not (visitor_sudo and visitor_sudo.lead_ids):
|
||||
country_code = 'geoip' in request.session and request.session['geoip'].get('country_code')
|
||||
state_code = 'geoip' in request.session and request.session['geoip'].get('region')
|
||||
country_code = request.geoip.get('country_code')
|
||||
state_code = request.geoip.get('region')
|
||||
if country_code:
|
||||
try:
|
||||
url = request.httprequest.url
|
||||
|
||||
@@ -222,7 +222,7 @@ class WebsiteCrmPartnerAssign(WebsitePartnerPage):
|
||||
# group by grade
|
||||
grade_domain = list(base_partner_domain)
|
||||
if not country and not country_all:
|
||||
country_code = request.session['geoip'].get('country_code')
|
||||
country_code = request.geoip.get('country_code')
|
||||
if country_code:
|
||||
country = country_obj.search([('code', '=', country_code)], limit=1)
|
||||
if country:
|
||||
|
||||
@@ -36,7 +36,7 @@ class WebsiteHrRecruitment(http.Controller):
|
||||
|
||||
# Default search by user country
|
||||
if not (country or department or office_id or kwargs.get('all_countries')):
|
||||
country_code = request.session['geoip'].get('country_code')
|
||||
country_code = request.geoip.get('country_code')
|
||||
if country_code:
|
||||
countries_ = Country.search([('code', '=', country_code)])
|
||||
country = countries_[0] if countries_ else None
|
||||
|
||||
@@ -878,7 +878,7 @@ class WebsiteSale(http.Controller):
|
||||
def_country_id = order.partner_id.country_id
|
||||
# IF PUBLIC ORDER
|
||||
if order.partner_id.id == request.website.user_id.sudo().partner_id.id:
|
||||
country_code = request.session['geoip'].get('country_code')
|
||||
country_code = request.geoip.get('country_code')
|
||||
if country_code:
|
||||
def_country_id = request.env['res.country'].search([('code', '=', country_code)], limit=1)
|
||||
else:
|
||||
|
||||
@@ -200,7 +200,7 @@ class Website(models.Model):
|
||||
return pl_id in self.get_pricelist_available(show_visible=False).ids
|
||||
|
||||
def _get_geoip_country_code(self):
|
||||
return request and request.session.geoip and request.session.geoip.get('country_code') or False
|
||||
return request and request.geoip.get('country_code') or False
|
||||
|
||||
def _get_cached_pricelist_id(self):
|
||||
return request and request.session.get('website_sale_current_pl') or None
|
||||
@@ -417,7 +417,7 @@ class Website(models.Model):
|
||||
# If the current user is the website public user, the fiscal position
|
||||
# is computed according to geolocation.
|
||||
if request.website.partner_id.id == partner_sudo.id:
|
||||
country_code = request.session['geoip'].get('country_code')
|
||||
country_code = request.geoip.get('country_code')
|
||||
if country_code:
|
||||
country_id = self.env['res.country'].search([('code', '=', country_code)], limit=1).id
|
||||
fpos = self.env['account.fiscal.position'].sudo()._get_fpos_by_region(country_id)
|
||||
|
||||
Reference in New Issue
Block a user