Ir al contenido
Menú
Se marcó esta pregunta
1 Responder
3842 Vistas

Hi, I have a scenario where I need to validate a email address whether it is valid or not. For validating I have used the following code.

hr_view.xml:

<field name="work_email" widget="email" on_change="onchange_work_email(work_email)"/>

hr.py

def onchange_work_email(self, cr, uid, ids, work_email): if re.match("^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$", work_email) != None: return True else: raise osv.except_osv(_('Invalid Email'), _('Please enter a valid email address'))

But I got No handler found error. I made changes in only above two files, Did i need to import regular expressions ? what is the error ? Any appreciate suggestions

Avatar
Descartar
Mejor respuesta

hii,


here your py updated code 
from odoo import models, fields, api

from odoo.exceptions import ValidationError

import re


class HrEmployee(models.Model):

    _inherit = 'hr.employee'


    work_email = fields.Char(string="Work Email")


    @api.onchange('work_email')

    def _onchange_work_email(self):

        if self.work_email:

            email = self.work_email.strip()

            pattern = r'^.+@([a-zA-Z0-9\-]+\.)+[a-zA-Z]{2,}$'

            if not re.match(pattern, email):

                raise ValidationError("Please enter a valid email address.")


XML (View) – Do NOT add on_change in XML

Just define the field like normal:

<field name="work_email"/>

Odoo will trigger the @api.onchange automatically when the field changes in the UI.

i hope it is use full

Avatar
Descartar
Publicaciones relacionadas Respuestas Vistas Actividad
1
sept 19
10720
3
dic 23
45889
0
mar 15
3733
0
mar 15
3876
1
dic 22
3622