Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
1 Trả lời
3857 Lượt xem

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

Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

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

Ảnh đại diện
Huỷ bỏ
Bài viết liên quan Trả lời Lượt xem Hoạt động
1
thg 9 19
10727
3
thg 12 23
45898
0
thg 3 15
3741
0
thg 3 15
3879
1
thg 12 22
3627