From 1ad5c0ea86556762306697ef377972f086071e73 Mon Sep 17 00:00:00 2001 From: Ankush Menat Date: Sat, 2 Sep 2023 11:35:33 +0530 Subject: [PATCH] refactor: Avoid regex for email validation [skip ci] --- frappe/tests/test_boilerplate.py | 2 ++ frappe/utils/boilerplate.py | 7 +++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/frappe/tests/test_boilerplate.py b/frappe/tests/test_boilerplate.py index 26e7c7a959..a29052bf01 100644 --- a/frappe/tests/test_boilerplate.py +++ b/frappe/tests/test_boilerplate.py @@ -102,11 +102,13 @@ class TestBoilerPlate(unittest.TestCase): invalid_inputs = copy.copy(self.default_user_input).update( { "title": ["1nvalid Title", "valid title"], + "email": ["notavalidemail", "what@is@this.email", "example@example.org"], } ) with patch("sys.stdin", self.get_user_input_stream(invalid_inputs)): hooks = _get_user_inputs(self.default_hooks.app_name) self.assertEqual(hooks.app_title, "valid title") + self.assertEqual(hooks.app_email, "example@example.org") def test_valid_ci_yaml(self): yaml.safe_load(github_workflow_template.format(**self.default_hooks)) diff --git a/frappe/utils/boilerplate.py b/frappe/utils/boilerplate.py index a1f2e71544..3522934ec0 100644 --- a/frappe/utils/boilerplate.py +++ b/frappe/utils/boilerplate.py @@ -16,7 +16,6 @@ import frappe from frappe.utils import touch_file APP_TITLE_PATTERN = re.compile(r"^(?![\W])[^\d_\s][\w -]+$", flags=re.UNICODE) -EMAIL_PATTERN = re.compile(r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$", flags=re.UNICODE) def make_boilerplate(dest, app_name, no_git=False): @@ -74,7 +73,11 @@ def _get_user_inputs(app_name): def is_valid_email(email) -> bool: - if not EMAIL_PATTERN.match(email): + from email.headerregistry import Address + + try: + Address(addr_spec=email) + except Exception: print("App Email should be a valid email address.") return False return True