From f70715d263ad21dedbc117b6d367ef35cd68ae25 Mon Sep 17 00:00:00 2001 From: root Date: Sat, 2 Apr 2022 13:39:34 +0000 Subject: [PATCH] validation phone, mobile, iban --- models/partner.py | 85 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 84 insertions(+), 1 deletion(-) diff --git a/models/partner.py b/models/partner.py index aded8fa..e633405 100644 --- a/models/partner.py +++ b/models/partner.py @@ -3,6 +3,7 @@ from odoo.exceptions import UserError, ValidationError, Warning from psycopg2 import sql, DatabaseError from werkzeug import utils +import re @@ -201,4 +202,86 @@ class partner(models.Model): def _onchange_street(self): for rec in self: rec.npai_count=0 - return \ No newline at end of file + return + + @api.constrains('email') + def _onchange_email(self): + if self.email: + if not self.image_1920 and self._context.get('gravatar_image') and self.email: + self.image_1920 = self._get_gravatar_image(self.email) + regex = re.compile(r'([A-Za-z0-9]+[.-_])*[A-Za-z0-9]+@[A-Za-z0-9-]+(\.[A-Z|a-z]{2,})+') + if not re.fullmatch(regex, self.email): + + raise ValidationError('Invalid email') + + @api.constrains('phone') + def _onchange_phone(self): + + regex = re.compile(r'(^(?:(?:\+|00)33[\s.-]{0,3}(?:\(0\)[\s.-]{0,3})?|0)[1-9](?:(?:[\s.-]?\d{2}){4}|\d{2}(?:[\s.-]?\d{3}){2})$)+') + + # 0123456789 + # 01 23 45 67 89 + # 01.23.45.67.89 + # 0123 45.67.89 + # 0033 123-456-789 + # +33-1.23.45.67.89 + # +33 - 123 456 789 + # +33(0) 123 456 789 + # +33 (0)123 45 67 89 + # +33 (0)1 2345-6789 + # +33(0) - 123456789 + + + if not re.fullmatch(regex, self.phone): + + raise ValidationError('Invalid phone') + + @api.constrains('mobile') + def _onchange_mobile(self): + + regex = re.compile(r'(^(?:(?:\+|00)33[\s.-]{0,3}(?:\(0\)[\s.-]{0,3})?|0)[1-9](?:(?:[\s.-]?\d{2}){4}|\d{2}(?:[\s.-]?\d{3}){2})$)+') + + # 0123456789 + # 01 23 45 67 89 + # 01.23.45.67.89 + # 0123 45.67.89 + # 0033 123-456-789 + # +33-1.23.45.67.89 + # +33 - 123 456 789 + # +33(0) 123 456 789 + # +33 (0)123 45 67 89 + # +33 (0)1 2345-6789 + # +33(0) - 123456789 + + + if not re.fullmatch(regex, self.mobile): + + raise ValidationError('Invalid mobile') + + + class ResPartnerBank(models.Model): + _inherit = 'res.partner.bank' + + @api.onchange('acc_number') + def _onchange_acc_number(self): + #validation IBAN + #https://www.regextester.com/115565 + if self.acc_number: + + regex = re.compile(r'(^(?:(?:IT|SM)\d{2}[A-Z]\d{22}|CY\d{2}[A-Z]\d{23}|NL\d{2}[A-Z]{4}\d{10}|LV\d{2}[A-Z]{4}\d{13}|(?:BG|BH|GB|IE)\d{2}[A-Z]{4}\d{14}|GI\d{2}[A-Z]{4}\d{15}|RO\d{2}[A-Z]{4}\d{16}|KW\d{2}[A-Z]{4}\d{22}|MT\d{2}[A-Z]{4}\d{23}|NO\d{13}|(?:DK|FI|GL|FO)\d{16}|MK\d{17}|(?:AT|EE|KZ|LU|XK)\d{18}|(?:BA|HR|LI|CH|CR)\d{19}|(?:GE|DE|LT|ME|RS)\d{20}|IL\d{21}|(?:AD|CZ|ES|MD|SA)\d{22}|PT\d{23}|(?:BE|IS)\d{24}|(?:FR|MR|MC)\d{25}|(?:AL|DO|LB|PL)\d{26}|(?:AZ|HU)\d{27}|(?:GR|MU)\d{28})$)+') + + if not re.fullmatch(regex, self.acc_number): + + raise Warning('Invalid IBAN') + + @api.constrains('acc_number') + def _onchange_acc_number(self): + #validation IBAN + #https://www.regextester.com/115565 + if self.acc_number: + + regex = re.compile(r'(^(?:(?:IT|SM)\d{2}[A-Z]\d{22}|CY\d{2}[A-Z]\d{23}|NL\d{2}[A-Z]{4}\d{10}|LV\d{2}[A-Z]{4}\d{13}|(?:BG|BH|GB|IE)\d{2}[A-Z]{4}\d{14}|GI\d{2}[A-Z]{4}\d{15}|RO\d{2}[A-Z]{4}\d{16}|KW\d{2}[A-Z]{4}\d{22}|MT\d{2}[A-Z]{4}\d{23}|NO\d{13}|(?:DK|FI|GL|FO)\d{16}|MK\d{17}|(?:AT|EE|KZ|LU|XK)\d{18}|(?:BA|HR|LI|CH|CR)\d{19}|(?:GE|DE|LT|ME|RS)\d{20}|IL\d{21}|(?:AD|CZ|ES|MD|SA)\d{22}|PT\d{23}|(?:BE|IS)\d{24}|(?:FR|MR|MC)\d{25}|(?:AL|DO|LB|PL)\d{26}|(?:AZ|HU)\d{27}|(?:GR|MU)\d{28})$)+') + + if not re.fullmatch(regex, self.acc_number): + + raise Warning('Invalid IBAN') \ No newline at end of file