From 609abb33626a7178202baf58b9f2216d4e226088 Mon Sep 17 00:00:00 2001 From: Gabriel De Los Rios Date: Sun, 8 Dec 2024 19:53:33 -0300 Subject: [PATCH] refactor: outsources common validation methods --- app/services/user_service.py | 2 +- .../user_validators.py} | 19 ++++++------------- app/utils/validators/validators.py | 12 ++++++++++++ 3 files changed, 19 insertions(+), 14 deletions(-) rename app/utils/{validators.py => validators/user_validators.py} (74%) create mode 100644 app/utils/validators/validators.py diff --git a/app/services/user_service.py b/app/services/user_service.py index f5fe87f..c0eb45c 100644 --- a/app/services/user_service.py +++ b/app/services/user_service.py @@ -8,7 +8,7 @@ from app.utils.alert_type import AlertType from app.utils.errors.users.user_register_errors import UserRegisterErrors from app.utils.flash_message import FlashMessage from app.utils.flash_message_category import FlashMessageCategory -from app.utils.validators import UserValidators +from app.utils.validators.user_validators import UserValidators class UserService: @staticmethod diff --git a/app/utils/validators.py b/app/utils/validators/user_validators.py similarity index 74% rename from app/utils/validators.py rename to app/utils/validators/user_validators.py index fb0bdd0..f77b68c 100644 --- a/app/utils/validators.py +++ b/app/utils/validators/user_validators.py @@ -1,12 +1,13 @@ from datetime import date from typing import Optional from app.utils.errors.users.user_register_errors import UserRegisterErrors -import re +from app.utils.validators.validators import Validators + class UserValidators: @staticmethod def is_valid_user_name(name: Optional[str], isLastname=False): - if(UserValidators.is_valid_str_and_pattern(name, '^[A-Za-z ]{2,255}$')): + if(Validators.is_valid_str_and_pattern(name, '^[A-Za-z ]{2,255}$')): return name if(isLastname): raise UserRegisterErrors("Invalid user lastname") @@ -14,7 +15,7 @@ class UserValidators: @staticmethod def is_valid_birth_date(birth_date: Optional[str]): - if(UserValidators.is_valid_str_and_pattern(birth_date, '^\d{4}-\d{2}-\d{2}$')): + if(Validators.is_valid_str_and_pattern(birth_date, '^\d{4}-\d{2}-\d{2}$')): try: birth_date = [int(n) for n in (str(birth_date)).split("-")] return date(birth_date[0], birth_date[1], birth_date[2]) @@ -24,13 +25,13 @@ class UserValidators: @staticmethod def is_valid_phone_number(phone_number: Optional[str]): - if(UserValidators.is_valid_str_and_pattern(phone_number, '^(\+\d{1,3}){0,1}[0-9]{7,255}$')): + if(Validators.is_valid_str_and_pattern(phone_number, '^(\+\d{1,3}){0,1}[0-9]{7,255}$')): return phone_number raise UserRegisterErrors("Invalid user phone number") @staticmethod def is_valid_email(email: Optional[str]): - if(UserValidators.is_valid_str_and_pattern(email, '^[A-Za-z0-9._%+\-]+@[A-Za-z0-9.\-]+\.[A-Za-z]{2,}$')): + if(Validators.is_valid_str_and_pattern(email, '^[A-Za-z0-9._%+\-]+@[A-Za-z0-9.\-]+\.[A-Za-z]{2,}$')): if(len(email) <= 255): return email raise UserRegisterErrors("Invalid user email") @@ -40,14 +41,6 @@ class UserValidators: if(isinstance(address, str) and len(address) <= 255): return address raise UserRegisterErrors("Invalid user address") - - @staticmethod - def is_valid_str_and_pattern(string: Optional[str], pattern: str): - if(isinstance(string, str)): - regex = re.compile(pattern) - if(regex.match(string) is not None): - return True - return False @staticmethod def is_valid_password(password: str): diff --git a/app/utils/validators/validators.py b/app/utils/validators/validators.py new file mode 100644 index 0000000..a5e5d02 --- /dev/null +++ b/app/utils/validators/validators.py @@ -0,0 +1,12 @@ +import re +from typing import Optional + +class Validators: + + @staticmethod + def is_valid_str_and_pattern(string: Optional[str], pattern: str): + if(isinstance(string, str)): + regex = re.compile(pattern) + if(regex.match(string) is not None): + return True + return False \ No newline at end of file