From 8ff1bae7e66d4be0c025440ac68a5d11b8709fb4 Mon Sep 17 00:00:00 2001 From: jiangweidong Date: Mon, 10 Apr 2023 17:24:17 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=89=8B=E6=9C=BA=E5=8F=B7=E5=8F=AF?= =?UTF-8?q?=E4=BB=A5=E4=B8=BA=E7=A9=BA=E5=8F=8A=E9=AA=8C=E8=AF=81=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/common/validators.py | 10 ++++++++-- apps/users/serializers/user.py | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) 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],