def test_valid_phone(self): """ Check if given is a valid phone number. """ assert valid_phone('+917676332020') is True assert valid_phone('+91 7676 33 2020') is False assert valid_phone('A91 7676 3A3 2020') is False assert valid_phone('*^$&766767**^&^') is False
def validate_phone(self, field): # Step 1: Remove punctuation in number number = strip_phone(field.data) # Step 2: Check length if len(number) > 16: raise forms.ValidationError( _("This is too long to be a valid phone number")) # Step 3: Validate number format if not valid_phone(number): raise forms.ValidationError( _("Invalid phone number (must be in international format with a leading + symbol)" )) # Step 4: Check if Indian number (startswith('+91')) if number.startswith('+91') and len(number) != 13: raise forms.ValidationError( _("This does not appear to be a valid Indian mobile number")) # Step 5: Check if number has already been claimed existing = UserPhone.get(phone=number) if existing is not None: if existing.user == current_auth.user: raise forms.ValidationError( _("You have already registered this phone number")) else: raise forms.ValidationError( _("This phone number has already been claimed")) existing = UserPhoneClaim.get(phone=number, user=current_auth.user) if existing is not None: raise forms.ValidationError( _("This phone number is pending verification")) field.data = number # Save stripped number
def validate_phone(self, field): # TODO: Use the phonenumbers library to validate this # Step 1: Remove punctuation in number number = strip_phone(field.data) # Step 2: Check length if len(number) > 16: raise forms.ValidationError(_("This is too long to be a valid phone number")) # Step 3: Validate number format if not valid_phone(number): raise forms.ValidationError(_("Invalid phone number (must be in international format with a leading + symbol)")) # Step 4: Check if Indian number (startswith('+91')) if number.startswith('+91') and len(number) != 13: raise forms.ValidationError(_("This does not appear to be a valid Indian mobile number")) # Step 5: Check if number has already been claimed existing = UserPhone.get(phone=number) if existing is not None: if existing.user == current_auth.user: raise forms.ValidationError(_("You have already registered this phone number")) else: raise forms.ValidationError(_("This phone number has already been claimed")) existing = UserPhoneClaim.get(phone=number, user=current_auth.user) if existing is not None: raise forms.ValidationError(_("This phone number is pending verification")) field.data = number # Save stripped number
def validate_phone(self, field): existing = UserPhone.query.filter_by(phone=field.data).first() if existing is not None: if existing.user == g.user: raise wtforms.ValidationError( "You have already registered this phone number.") else: raise wtforms.ValidationError( "That phone number has already been claimed.") existing = UserPhoneClaim.query.filter_by(phone=field.data, user=g.user).first() if existing is not None: raise wtforms.ValidationError( "That phone number is pending verification.") # Step 1: Remove punctuation in number field.data = strip_phone(field.data) # Step 2: Validate number format if not valid_phone(field.data): raise wtforms.ValidationError( "Invalid phone number (must be in international format with a leading + symbol)" ) # Step 3: Check if Indian number (startswith('+91')) if not field.data.startswith('+91') or len(field.data) != 13: raise wtforms.ValidationError( "Only Indian mobile numbers are allowed at this time")
def validate_phone(self, field): existing = UserPhone.query.filter_by(phone=field.data).first() if existing is not None: if existing.user == g.user: raise wtforms.ValidationError("You have already registered this phone number.") else: raise wtforms.ValidationError("That phone number has already been claimed.") existing = UserPhoneClaim.query.filter_by(phone=field.data, user=g.user).first() if existing is not None: raise wtforms.ValidationError("That phone number is pending verification.") # Step 1: Remove punctuation in number field.data = strip_phone(field.data) # Step 2: Validate number format if not valid_phone(field.data): raise wtforms.ValidationError("Invalid phone number (must be in international format with a leading + symbol)") # Step 3: Check if Indian number (startswith('+91')) if not field.data.startswith('+91') or len(field.data) != 13: raise wtforms.ValidationError("Only Indian mobile numbers are allowed at this time")