Esempio n. 1
0
    def parse(self):
        self.parse_area_code()

        # Check for country code
        if self._phone.country_code != 62:
            raise phonenumbers.NumberParseException(
                phonenumbers.NumberParseException.INVALID_COUNTRY_CODE,
                "Number is not Indonesian number")

        number_length = len(self.local_number)

        # Check if this is a fixed CDMA number
        if number_length == 10 or number_length == 11:
            self.carrier = MOBILE_CDMA_PREFIXES.get(self.local_number[:3])

        # GSM
        if self.carrier is None and number_length in (9, 10, 11, 12):
            self.carrier = GSM_PREFIXES.get(self.local_number[:3])

        # Try to check CDMA prefix, always have 8 number length
        if self.carrier is None and number_length == 8:
            self.carrier = CDMA_PREFIXES.get(self.local_number[:2]) \
                or CDMA_PREFIXES.get(self.local_number[:1])

        if self.carrier:
            self.is_mobile = True
Esempio n. 2
0
def check_phone(form, field):
    number = form.phone.data
    try:
        if not phonenumbers.is_valid_number(phonenumbers.parse(number, 'RU')):
            raise phonenumbers.NumberParseException(None, None)
    except phonenumbers.NumberParseException:
        raise ValidationError(
            'Пожалуйста укажите номер телефона полностью (+7ХХХХХХХХХХ)')
Esempio n. 3
0
def validate_phone(phone):
    phone_parsed = phonenumbers.parse(phone, region="DE")
    if not (
        phonenumbers.is_possible_number(phone_parsed)
        and phonenumbers.is_valid_number(phone_parsed)
    ):
        raise phonenumbers.NumberParseException(
            "NOT_A_NUMBER", "Invalid or impossible number"
        )
Esempio n. 4
0
    def validate_phone(self, value):
        try:
            phone_number = phonenumbers.parse(value, region="AZ")

            if not phonenumbers.is_valid_number(phone_number):
                raise phonenumbers.NumberParseException("error", "error")
            return value
        except phonenumbers.NumberParseException:
            raise serializers.ValidationError("Telefon Nömrə yanlışdı")
Esempio n. 5
0
    def validate(self, value):
        if not self.required and not value:
            return None

        error_msg = 'Phone number is not valid. Please use the international format like +16505551234'
        try:
            number = PhoneField._parse(value)

            if self._strict_validation and not phonenumbers.is_valid_number(number):
                raise phonenumbers.NumberParseException(phonenumbers.NumberParseException.NOT_A_NUMBER, error_msg)

        except phonenumbers.NumberParseException:
            self.error(error_msg)
Esempio n. 6
0
def convert_to_e164(raw_phone):
    if not raw_phone:
        raise phonenumbers.NumberParseException(
            phonenumbers.NumberParseException.TOO_SHORT_NSN, 'Emtpy number!')

    if raw_phone[0] == '+':
        # Phone number may already be in E.164 format.
        parse_type = None
    else:
        # If no country code information present, assume it's a US number
        parse_type = "US"

    phone_representation = phonenumbers.parse(raw_phone, parse_type)
    return phonenumbers.format_number(phone_representation,
                                      phonenumbers.PhoneNumberFormat.E164)
Esempio n. 7
0
    def __split_phone_number(phone_number: str) -> Tuple[str, str]:
        """
        A function that splits phone number into country code and national number.

        :param phone_number: phone number in international format.

        :return: a tuple consisting of country code and national number.

        :raises: phonenumbers.NumberParseException: thrown when the attempt to parse the phone number failed.
        :raises: ValueError: thrown when the provided phone number is invalid.
        """

        try:
            pn: PhoneNumber = phonenumbers.parse(phone_number)
        except phonenumbers.NumberParseException as err_parse:
            raise phonenumbers.NumberParseException(
                error_type=phonenumbers.NumberParseException.NOT_A_NUMBER,
                msg="Invalid phone number!",
            ) from err_parse

        if not phonenumbers.is_valid_number(pn):
            raise ValueError("Invalid phone number!")

        return "+" + str(pn.country_code), str(pn.national_number)
Esempio n. 8
0
 def test_number_parse_exception(self, mock_parse):
     mock_parse.side_effect = phonenumbers.NumberParseException(
         'Test error', 'Test error')
     phone1 = 'blahblah'
     phone2 = format_for_display(phone1, 'AU')
     self.assertEqual(phone1, phone2)