validate phone number for iran

This commit is contained in:
Sayyid Hamid Mahdavi 2020-11-18 12:03:03 +03:30
parent 74677a3790
commit 34550be387
2 changed files with 16 additions and 2 deletions

View file

@ -9,13 +9,14 @@ from django.contrib.auth.validators import UnicodeUsernameValidator
from django.db import models from django.db import models
from django.utils import timezone from django.utils import timezone
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from rest_framework.exceptions import APIException
import uuid import uuid
from .provinces_and_cities import state from .provinces_and_cities import state
from .tasks import send_notification from .tasks import send_notification
from apps.users.constans import MAX_OTP_TRY, DEVELOPMENT_PHONE_NUMBERS from apps.users.constans import MAX_OTP_TRY, DEVELOPMENT_PHONE_NUMBERS
from .validators import PhoneNumberValidator
class UserManager(BaseUserManager): class UserManager(BaseUserManager):
use_in_migrations = True use_in_migrations = True
@ -106,7 +107,8 @@ class User(AbstractUser):
blank=True, blank=True,
null=True null=True
) )
phone_number = models.CharField(_('phone number'), max_length=30, blank=True, null=True, unique=True) phone_number = models.CharField(_('phone number'), max_length=30, blank=True, null=True, unique=True,
validators=[PhoneNumberValidator],)
otp = models.CharField(_('otp'), max_length=6, blank=True, null=True) otp = models.CharField(_('otp'), max_length=6, blank=True, null=True)
otp_expire = models.DateTimeField(_('otp expire'), blank=True, null=True) otp_expire = models.DateTimeField(_('otp expire'), blank=True, null=True)
otp_try = models.IntegerField(_('otp try'), blank=True, null=True, default=0) otp_try = models.IntegerField(_('otp try'), blank=True, null=True, default=0)

12
apps/users/validators.py Normal file
View file

@ -0,0 +1,12 @@
from django.core import validators
from django.utils.deconstruct import deconstructible
from django.utils.translation import gettext_lazy as _
@deconstructible
class PhoneNumberValidator(validators.RegexValidator):
regex = r'^\+98\d{10,10}$'
message = _(
"Phone number must be entered in the format: '+989999999999'."
)
flags = 0