diff --git a/addons/auth_totp_mail_enforce/models/res_users.py b/addons/auth_totp_mail_enforce/models/res_users.py index e0018a13e66..16751019daf 100644 --- a/addons/auth_totp_mail_enforce/models/res_users.py +++ b/addons/auth_totp_mail_enforce/models/res_users.py @@ -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({ diff --git a/addons/im_livechat/controllers/main.py b/addons/im_livechat/controllers/main.py index f833d5d3fde..7a855547229 100644 --- a/addons/im_livechat/controllers/main.py +++ b/addons/im_livechat/controllers/main.py @@ -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 diff --git a/addons/link_tracker/controller/main.py b/addons/link_tracker/controller/main.py index e6573c49bf1..a68e2cc7d2a 100644 --- a/addons/link_tracker/controller/main.py +++ b/addons/link_tracker/controller/main.py @@ -12,8 +12,7 @@ class LinkTracker(http.Controller): @http.route('/r/', 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, diff --git a/addons/mail/controllers/discuss.py b/addons/mail/controllers/discuss.py index 0f3c88eec38..94d10a0fa03 100644 --- a/addons/mail/controllers/discuss.py +++ b/addons/mail/controllers/discuss.py @@ -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), diff --git a/addons/mass_mailing/controllers/main.py b/addons/mass_mailing/controllers/main.py index 47e5f8d59bc..9ed79958367 100644 --- a/addons/mass_mailing/controllers/main.py +++ b/addons/mass_mailing/controllers/main.py @@ -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, diff --git a/addons/mass_mailing_sms/controllers/main.py b/addons/mass_mailing_sms/controllers/main.py index 52f41b460ec..ea90099eff5 100644 --- a/addons/mass_mailing_sms/controllers/main.py +++ b/addons/mass_mailing_sms/controllers/main.py @@ -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//s/', 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: diff --git a/addons/website/models/ir_http.py b/addons/website/models/ir_http.py index c57c216dc38..06c7623cf32 100644 --- a/addons/website/models/ir_http.py +++ b/addons/website/models/ir_http.py @@ -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, diff --git a/addons/website/models/website.py b/addons/website/models/website.py index 6df04219989..4121df8e1a2 100644 --- a/addons/website/models/website.py +++ b/addons/website/models/website.py @@ -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 diff --git a/addons/website/models/website_page.py b/addons/website/models/website_page.py index dc2c8cb5a7c..797696a210a 100644 --- a/addons/website/models/website_page.py +++ b/addons/website/models/website_page.py @@ -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 diff --git a/addons/website/models/website_visitor.py b/addons/website/models/website_visitor.py index 4a651d72e0c..b540d0e3500 100644 --- a/addons/website/models/website_visitor.py +++ b/addons/website/models/website_visitor.py @@ -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, diff --git a/addons/website/views/snippets/snippets.xml b/addons/website/views/snippets/snippets.xml index 41687d19f0f..78e432b7632 100644 --- a/addons/website/views/snippets/snippets.xml +++ b/addons/website/views/snippets/snippets.xml @@ -1142,7 +1142,7 @@ Conditionally - + ⌙ Country diff --git a/addons/website_crm/controllers/website_form.py b/addons/website_crm/controllers/website_form.py index b6aa8249fd4..55c4579db18 100644 --- a/addons/website_crm/controllers/website_form.py +++ b/addons/website_crm/controllers/website_form.py @@ -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: diff --git a/addons/website_crm_iap_reveal/models/ir_http.py b/addons/website_crm_iap_reveal/models/ir_http.py index 893a6557265..4a470328c76 100644 --- a/addons/website_crm_iap_reveal/models/ir_http.py +++ b/addons/website_crm_iap_reveal/models/ir_http.py @@ -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 diff --git a/addons/website_crm_partner_assign/controllers/main.py b/addons/website_crm_partner_assign/controllers/main.py index 7086c835fa9..6626b3096c7 100644 --- a/addons/website_crm_partner_assign/controllers/main.py +++ b/addons/website_crm_partner_assign/controllers/main.py @@ -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: diff --git a/addons/website_hr_recruitment/controllers/main.py b/addons/website_hr_recruitment/controllers/main.py index 2bcb82176a6..31916df662f 100644 --- a/addons/website_hr_recruitment/controllers/main.py +++ b/addons/website_hr_recruitment/controllers/main.py @@ -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 diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index 1b58e994e1f..c6bd04ed6ab 100644 --- a/addons/website_sale/controllers/main.py +++ b/addons/website_sale/controllers/main.py @@ -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: diff --git a/addons/website_sale/models/website.py b/addons/website_sale/models/website.py index 7d443f5ef1a..30ab77b36e2 100644 --- a/addons/website_sale/models/website.py +++ b/addons/website_sale/models/website.py @@ -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)