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>
25 lines
866 B
Python
25 lines
866 B
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from werkzeug.exceptions import NotFound
|
|
|
|
from odoo import http
|
|
from odoo.http import request
|
|
|
|
|
|
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.geoip.get('country_code')
|
|
request.env['link.tracker.click'].sudo().add_click(
|
|
code,
|
|
ip=request.httprequest.remote_addr,
|
|
country_code=country_code,
|
|
)
|
|
redirect_url = request.env['link.tracker'].get_url_from_code(code)
|
|
if not redirect_url:
|
|
raise NotFound()
|
|
return request.redirect(redirect_url, code=301, local=False)
|