Skip to content
Snippets Groups Projects
Commit 4388505c authored by Fabien Pinckaers's avatar Fabien Pinckaers Committed by Thibault Delavallée
Browse files

[ADD] website_crm_phone_validation: add phone validation in contact form

This way if phone validation is activated users will have to enter correct
phone numbers. This will greatly help having correct data in customer
tables and improve efficiency of CRM-based flow.
parent 2c61be16
No related branches found
No related tags found
No related merge requests found
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import controllers
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
{
'name': 'Contact Form Number Validation',
'summary': 'Validate and format contact form numbers',
'sequence': '9999',
'category': 'Hidden',
'description': """
Contact Number Validation on Website
====================================
Validate contact (phone,mobile,fax) numbers and normalize them on leads and contacts:
- use the national format for your company country
- use the international format for all others
""",
'data': [],
'depends': [
'crm_phone_validation',
'website_crm',
'website_form',
],
'auto_install': True,
}
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import website_form
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo.addons.website_form.controllers.main import WebsiteForm
from odoo.http import request, route
import json
class WebsiteForm(WebsiteForm):
def _get_country(self):
country_code = request.session.geoip and request.session.geoip.get('country_code') or False
if country_code:
return request.env['res.country'].sudo().search([('code', '=', country_code)], limit=1)
return request.env['res.country']
def _get_phone_fields_to_validate(self):
return ['phone', 'mobile', 'fax']
@route('/website_form/<string:model_name>', type='http', auth="public", methods=['POST'], website=True)
def website_form(self, model_name, **kwargs):
model_record = request.env['ir.model'].sudo().search([('model', '=', model_name), ('website_form_access', '=', True)])
if not model_record or not hasattr(request.env[model_name], 'phone_format'):
return super(WebsiteForm, self).website_form(model_name, **kwargs)
try:
data = self.extract_data(model_record, request.params)
except:
# no specific management, super will do it
pass
else:
record = data.get('record', {})
phone_fields = self._get_phone_fields_to_validate()
country = self._get_country()
invalid_fields = {}
for phone_field in phone_fields:
if not record.get(phone_field):
continue
number = record[phone_field]
try:
request.env[model_name].phone_format(number, country)
except Exception as error:
invalid_fields[phone_field] = error.args[0]
if invalid_fields:
return json.dumps({'error_fields': invalid_fields})
return super(WebsiteForm, self).website_form(model_name, **kwargs)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment