Before this commit, when you had a lead coming from your website form, you had no informations from where it was located. It was especially painful for USA which should add customer their location to know their timezone and know at which time they could call him. Now, the state code is added to the created lead. It is easy to figure what timezone the user is on without contacting him first to ask. This closes #20424 task-29784
21 lines
1.0 KiB
Python
21 lines
1.0 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import http
|
|
from odoo.http import request
|
|
from odoo.addons.website_form.controllers.main import WebsiteForm
|
|
|
|
class WebsiteForm(WebsiteForm):
|
|
|
|
# Check and insert values from the form on the model <model>
|
|
@http.route('/website_form/<string:model_name>', type='http', auth="public", methods=['POST'], website=True)
|
|
def website_form(self, model_name, **kwargs):
|
|
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')
|
|
if geoip_country_code and geoip_state_code:
|
|
State = request.env['res.country.state']
|
|
request.params['state_id'] = State.search([('code', '=', geoip_state_code), ('country_id.code', '=', geoip_country_code)]).id
|
|
|
|
return super(WebsiteForm, self).website_form(model_name, **kwargs)
|