Example #1
0
    def test_strip_phone(self):
        """
        Check if given has spaces or dashes and strip it

        """
        self.assertEqual(strip_phone('+91-7676-33-2020'), '+917676332020')
        self.assertEqual(strip_phone('+91 7676 33 2020'), '+917676332020')
Example #2
0
 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
Example #3
0
    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
Example #4
0
 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")
Example #5
0
 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")