def validate(number): """Checks to see if the number provided is a valid VAT number. This checks the length, formatting and check digit.""" number = compact(number) if not all(x in _alphabet for x in number[:2]): raise InvalidFormat() if not number[2:].isdigit(): raise InvalidFormat() if len(number) != 11: raise InvalidLength() if number[2:5] != '000': # numbers from Monaco are valid TVA but not SIREN siren.validate(number[2:]) if number.isdigit(): # all-numeric digits if int(number[:2]) != (int(number[2:] + '12') % 97): raise InvalidChecksum() else: # one of the first two digits isn't a number if number[0].isdigit(): check = (_alphabet.index(number[0]) * 24 + _alphabet.index(number[1]) - 10) else: check = (_alphabet.index(number[0]) * 34 + _alphabet.index(number[1]) - 100) if (int(number[2:]) + 1 + check // 11) % 11 != (check % 11): raise InvalidChecksum() return number
def validate(number): """Check if the number is a valid VAT number. This checks the length, formatting and check digit.""" number = compact(number) if not all(x in _alphabet for x in number[:2]): raise InvalidFormat() if not isdigits(number[2:]): raise InvalidFormat() if len(number) != 11: raise InvalidLength() if number[2:5] != '000': # numbers from Monaco are valid TVA but not SIREN siren.validate(number[2:]) if isdigits(number): # all-numeric digits if int(number[:2]) != (int(number[2:] + '12') % 97): raise InvalidChecksum() else: # one of the first two digits isn't a number if isdigits(number[0]): check = ( _alphabet.index(number[0]) * 24 + _alphabet.index(number[1]) - 10) else: check = ( _alphabet.index(number[0]) * 34 + _alphabet.index(number[1]) - 100) if (int(number[2:]) + 1 + check // 11) % 11 != (check % 11): raise InvalidChecksum() return number
def validate_siren(value): try: siren.validate(value) except (InvalidChecksum, InvalidFormat, InvalidLength): raise ValidationError( _("%(value)s is not a valid siren id"), params={"value": value}, )
def validate(number): """Checks to see if the number provided is a valid number. This checks the length, formatting and check digit.""" number = compact(number) if not number.isdigit(): raise InvalidFormat() if len(number) != 14: raise InvalidLength() luhn.validate(number) siren.validate(number[:9]) return number
def validate(number): """Check if the number is a valid SIRET. This checks the length, formatting and check digit.""" number = compact(number) if not isdigits(number): raise InvalidFormat() if len(number) != 14: raise InvalidLength() luhn.validate(number) siren.validate(number[:9]) return number
def validate(number): """Check if the number is a valid SIRET. This checks the length, formatting and check digit.""" number = compact(number) if not isdigits(number): raise InvalidFormat() if len(number) != 14: raise InvalidLength() # La Poste SIRET (except the head office) do not use the Luhn checksum # but the sum of digits must be a multiple of 5 if number.startswith('356000000') and number != '35600000000048': if sum(map(int, number)) % 5 != 0: raise InvalidChecksum() else: luhn.validate(number) siren.validate(number[:9]) return number