diff --git a/apps/common/validators.py b/apps/common/validators.py index c77a03581..a2e338406 100644 --- a/apps/common/validators.py +++ b/apps/common/validators.py @@ -10,6 +10,7 @@ from rest_framework.validators import ( UniqueTogetherValidator, ValidationError ) from rest_framework import serializers +from phonenumbers.phonenumberutil import NumberParseException from common.utils.strings import no_special_chars @@ -47,6 +48,11 @@ class PhoneValidator: message = _('The mobile phone number format is incorrect') def __call__(self, value): - phone = phonenumbers.parse(value) - if not phonenumbers.is_valid_number(phone): + try: + phone = phonenumbers.parse(value) + valid = phonenumbers.is_valid_number(phone) + except NumberParseException: + valid = False + + if valid: raise serializers.ValidationError(self.message) diff --git a/apps/users/serializers/user.py b/apps/users/serializers/user.py index e21aab06b..aa997d27f 100644 --- a/apps/users/serializers/user.py +++ b/apps/users/serializers/user.py @@ -106,7 +106,7 @@ class UserSerializer(RolesSerializerMixin, CommonBulkSerializerMixin, serializer allow_null=True, max_length=1024, ) phone = PhoneField( - validators=[PhoneValidator()], required=False, allow_null=True, label=_("Phone") + validators=[PhoneValidator()], required=False, allow_blank=True, allow_null=True, label=_("Phone") ) custom_m2m_fields = { "system_roles": [BuiltinRole.system_user],