From b54654ed4c7a0029e2dfa879e541b61fbc65eb4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 17 Nov 2025 14:38:07 +0100 Subject: [PATCH] Do not create contact mechanism for invalid email from Shopify Closes #14368 (grafted from 643142484aee74972d3caee2c4a449f8f4abba7e) --HG-- branch : 7.0 --- modules/web_shop_shopify/party.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/modules/web_shop_shopify/party.py b/modules/web_shop_shopify/party.py index 45c8384bb9..b233f46924 100644 --- a/modules/web_shop_shopify/party.py +++ b/modules/web_shop_shopify/party.py @@ -1,10 +1,15 @@ # This file is part of Tryton. The COPYRIGHT file at the top level of # this repository contains the full copyright notices and license terms. +import logging + from trytond.pool import Pool, PoolMeta from trytond.tools import remove_forbidden_chars +from trytond.tools.email_ import EmailNotValidError, validate_email from .common import IdentifiersMixin, setattr_changed +logger = logging.getLogger(__name__) + class Party(IdentifiersMixin, metaclass=PoolMeta): __name__ = 'party.party' @@ -34,6 +39,12 @@ class Party(IdentifiersMixin, metaclass=PoolMeta): value, contact_mechanism.type))): break else: + if types[0] == 'email': + try: + validate_email(value) + except EmailNotValidError as e: + logger.info("Skip email %s", value, exc_info=e) + continue contact_mechanisms.append(ContactMechanism( type=types[0], value=value)) party.contact_mechanisms = contact_mechanisms