예제 #1
0
def num_to_code(user_number, part_number):
    """
    Convert a user/part number combo to an alphanumeric asset code.

    :param user_number int: The user number.
    :param part_number int: The part number.
    :returns: An asset code string.
    :rtype: str
    """
    if user_number < 0 or part_number < 0:
        raise ValueError('User ({0}) or part ({1}) number cannot be '
                         'negative. '.format(user_number, part_number))

    assetno = ''
    for num in (user_number, part_number):
        while True:
            if num > 15:
                r = num % 16
                assetno = assetno + ALPHABET[r + 16]
                num = num // 16
            else:
                assetno = assetno + ALPHABET[num]
                break

    checkdigit = luhn.calc_check_digit(assetno, ALPHABET)

    assetno = assetno + checkdigit
    assert luhn.is_valid(assetno, ALPHABET)
    return assetno
예제 #2
0
def num_to_code(user_number, part_number):
    """
    Convert a user/part number combo to an alphanumeric asset code.

    :param user_number int: The user number.
    :param part_number int: The part number.
    :returns: An asset code string.
    :rtype: str
    """
    if user_number < 0 or part_number < 0:
        raise ValueError('User ({0}) or part ({1}) number cannot be '
                         'negative. '.format(user_number, part_number))

    assetno = ''
    for num in (user_number, part_number):
        while True:
            if num > 15:
                r = num % 16
                assetno = assetno + ALPHABET[r + 16]
                num = num // 16
            else:
                assetno = assetno + ALPHABET[num]
                break

    checkdigit = luhn.calc_check_digit(assetno, ALPHABET)

    assetno = assetno + checkdigit
    assert luhn.is_valid(assetno, ALPHABET)
    return assetno
예제 #3
0
 def test_normal(self):
     for code, result in [('7894', '9')]:
         self.assertEqual(luhn.calc_check_digit(code), result)