def validate_identifier(identifier): errors = [] if identifier: if identifier["id_type"] == "issn": try: issn.validate(identifier["value"]) except: errors.append("Invalid ISSN: {}".format(identifier["value"])) elif identifier["id_type"] == "isbn": try: isbn.validate(identifier["value"]) except: errors.append("Invalid ISBN: {}".format(identifier["value"])) elif identifier["id_type"] == "isan": try: isan.validate(identifier["value"]) except: errors.append("Invalid ISAN: {}".format(identifier["value"])) elif identifier["id_type"] == "ismn": try: ismn.validate(identifier["value"]) except: errors.append("Invalid ISMN: {}".format(identifier["value"])) elif identifier["id_type"] == "ean": try: ean.validate(identifier["value"]) except: errors.append("Invalid EAN: {}".format(identifier["value"])) return errors
def validate(number): """Checks to see if the number provided is a valid ISMN (either a legacy 10-digit one or a 13-digit one). This checks the length and the check bit but does not check if the publisher is known.""" number = compact(number) if len(number) == 10: if number[0] != 'M': raise InvalidFormat() ean.validate('9790' + number[1:]) else: ean.validate(number) return number
def validate(number): """Checks to see if the number provided is a valid Swiss Sozialversicherungsnummer.""" number = compact(number) if len(number) != 13: raise InvalidLength() return ean.validate(number)
def validate(number): """Check if the number is a valid Swiss Sozialversicherungsnummer.""" number = compact(number) if len(number) != 13: raise InvalidLength() if not number.startswith('756'): raise InvalidComponent() return ean.validate(number)
def validate(number, convert=False): """Checks to see if the number provided is a valid ISBN (either a legacy 10-digit one or a 13-digit one). This checks the length and the check bit but does not check if the group and publisher are valid (use split() for that).""" number = compact(number, convert=False) if not number[:-1].isdigit(): raise InvalidFormat() if len(number) == 10: if _calc_isbn10_check_digit(number[:-1]) != number[-1]: raise InvalidChecksum() elif len(number) == 13: ean.validate(number) else: raise InvalidLength() if convert: number = to_isbn13(number) return number
def validate_ean(field, value, error): try: validated_value = ean.validate(value) # stdnum allows 8/12/13 digits long EANs. For us, only EAN-13 works if len(validated_value) != 13: raise InvalidLength() except ValidationError as e: error(field, e.message)
def validate_res_partner_gln(self, id_number): self.ensure_one() if not id_number: return False try: ean.validate(id_number.name) except InvalidChecksum: return True cat = self.env.ref('partner_identification_gln.' 'partner_identification_gln_number_category').id duplicate_gln = self._search_duplicate(cat, id_number, True) if duplicate_gln: return True return False
def upce_to_upca(upce, validate=True): """ Converts an UPC-E code to a 12 digit UPC-A code. If code is 7 digits and first digit is not zero then will form 8 digit code by pading left with a zero (assumes the left zero was lost somewhere in conversion to int). See: https://stackoverflow.com/questions/31539005/how-to-convert-a-upc-e-barcode-to-a-upc-a-barcode http://www.taltech.com/barcodesoftware/symbologies/upc Args: upce (str or int): The upce code. Will properly handle a 6 or 8 digit code or an 8 digit code that lost its leading zero. validate: Will validate the length of input, the 'S' leader digit if an 8 digit code, and the checksum (if given an 8 digit code). Returns: (str): The UPC-A code. """ given_upce = str(upce) # can safely zero pad left a seven digit upce (is missing its left zero) if (len(given_upce) == 7) and (given_upce[0] != '0'): pad = '0' else: pad = '' padded_upce = pad + given_upce if validate: if len(padded_upce) not in (6, 8): raise ValueError("Provided UPC-E {} must be 6 or 8 digits!".format( repr(given_upce))) if (len(padded_upce) == 8 and padded_upce[0] not in ('0', '1')): raise ValueError("8 digit UPC-E must begin with 0 or 1") given_6_digit_upce = (len(padded_upce) == 6) upce6 = padded_upce if given_6_digit_upce else padded_upce[1:7] # upce6 digit names: abcdeN map_id = int(upce6[-1]) # N ab_prefix = upce6[0:2] # ab if map_id >= 5: core = upce6[2:5], '0' * 4, map_id # cde0000N elif map_id <= 2: core = map_id, '0' * 4, upce6[2:5] # N0000cde elif map_id == 3: core = upce6[2], '0' * 5, upce6[3:5] # c00000de elif map_id == 4: core = upce6[2:4], '0' * 5, upce6[4] # cd00000e # ab + core no_leader_no_checksum = ab_prefix + ''.join(map(str, core)) # add leader, also called 'S' digit leader = '0' if given_6_digit_upce else padded_upce[0] with_leader_no_checksum = leader + no_leader_no_checksum if given_6_digit_upce: with_checksum = with_leader_no_checksum\ + ean.calc_check_digit(with_leader_no_checksum) else: with_checksum = with_leader_no_checksum + given_upce[-1] if validate: ean.validate(with_checksum) return with_checksum
def validate(number): """Checks to see if the number provided is a valid Swiss Sozialversicherungsnummer.""" return ean.validate(compact(number))
def is_valid_ean(ean_num: str) -> bool: try: ean.validate(ean_num) except Exception as e: return False return True