Skip to main content
 首页 » 编程设计

python之Odoo 10之验证合作伙伴的电子邮件

2024年09月03日40oomusou

这是我验证电子邮件的功能:

# Vérifie que l'adresse mail du partner soit valide 
    @api.onchange('email') 
    def adressmailtoverify(self): 
 
        for rec in self: 
 
            address_to_verify = rec.email 
            match = re.match("^[a-zA-Z0-9_\-]+(\.[a-zA-Z0-9_\-]+)*@[a-zA-Z0-9_\-]+" 
                             "(\.[a-zA-Z0-9_\-]+)*(\.[a-zA-Z]{2,6})$", address_to_verify) 
            if not match: 
                raise ValidationError("Problème de synthaxe adresse mail, merci de modifier") 
            else: 
                pass 

这里是我的错误:

Odoo Server Error 
 
Traceback (most recent call last): 
  File "/var/lib/odoo/odoo/odoo/odoo/http.py", line 640, in _handle_exception 
    return super(JsonRequest, self)._handle_exception(exception) 
  File "/var/lib/odoo/odoo/odoo/odoo/http.py", line 677, in dispatch 
    result = self._call_function(**self.params) 
  File "/var/lib/odoo/odoo/odoo/odoo/http.py", line 333, in _call_function 
    return checked_call(self.db, *args, **kwargs) 
  File "/var/lib/odoo/odoo/odoo/odoo/service/model.py", line 101, in wrapper 
    return f(dbname, *args, **kwargs) 
  File "/var/lib/odoo/odoo/odoo/odoo/http.py", line 326, in checked_call 
    result = self.endpoint(*a, **kw) 
  File "/var/lib/odoo/odoo/odoo/odoo/http.py", line 935, in __call__ 
    return self.method(*args, **kw) 
  File "/var/lib/odoo/odoo/odoo/odoo/http.py", line 506, in response_wrap 
    response = f(*args, **kw) 
  File "/usr/lib/python2.7/dist-packages/odoo/addons/web/controllers/main.py", line 885, in call_kw 
    return self._call_kw(model, method, args, kwargs) 
  File "/usr/lib/python2.7/dist-packages/odoo/addons/web/controllers/main.py", line 877, in _call_kw 
    return call_kw(request.env[model], method, args, kwargs) 
  File "/var/lib/odoo/odoo/odoo/odoo/api.py", line 689, in call_kw 
    return call_kw_multi(method, model, args, kwargs) 
  File "/var/lib/odoo/odoo/odoo/odoo/api.py", line 680, in call_kw_multi 
    result = method(recs, *args, **kwargs) 
  File "/var/lib/odoo/horanet/horanet_go/horanet_web/models/tool_field_dirty.py", line 59, in onchange 
    res = super(ToolFieldDirty, self).onchange(values, field_name, field_onchange) 
  File "/var/lib/odoo/odoo/odoo/odoo/models.py", line 5494, in onchange 
    record._onchange_eval(name, field_onchange[name], result) 
  File "/var/lib/odoo/odoo/odoo/odoo/models.py", line 5392, in _onchange_eval 
    method_res = method(self) 
  File "/var/lib/odoo/projects/Odoo/parthenay_tpa_mediatheque/models/inherited_partner.py", line 127, in adressmailtoverify 
    "(\.[a-zA-Z0-9_\-]+)*(\.[a-zA-Z]{2,6})$", address_to_verify) 
  File "/usr/lib/python2.7/re.py", line 141, in match 
    return _compile(pattern, flags).match(string) 
TypeError: expected string or buffer 

清除电子邮件时出现此错误。

我的第二个担心是,即使我的异常被抛出,我的合作伙伴也会注册。你能帮助我吗 ?谢谢

请您参考如下方法:

更改 for 行并改用它:

for rec in self.filtered("email"): 

问题的发生是因为 Odoo 中的值为 False,并且您不能将正则表达式应用于 bool。