(source_uuid)
Derive a short (12 character) id from a random UUID.

    The supplied UUID must be a version 4 UUID object.
Derive a short (12 character) id from a random UUID.
Derive a short ( 12 character ) id from a random UUID .
def get_id(source_uuid):
    """Derive a short (12 character) id from a random UUID.

    The supplied UUID must be a version 4 UUID object.
    """
    if isinstance(source_uuid, six.string_types):
        source_uuid = uuid.UUID(source_uuid)
    if source_uuid.version != 4:
        raise ValueError(_('Invalid UUID version (%d)') % source_uuid.version)

    # The "time" field of a v4 UUID contains 60 random bits
    # (see RFC4122, Section 4.4)
    random_bytes = _to_byte_string(source_uuid.time, 60)
    # The first 12 bytes (= 60 bits) of base32-encoded output is our data
    encoded = base64.b32encode(six.b(random_bytes))[:12]

    if six.PY3:
        return encoded.lower().decode('utf-8')
    else:
        return encoded.lower()
def get_id ( source_uuid ) : if isinstance ( source_uuid , six . string_types ) : source_uuid = uuid . UUID ( source_uuid ) if source_uuid . version != 4 : raise ValueError ( _ ( 'Invalid UUID version (%d)' ) % source_uuid . version ) # The "time" field of a v4 UUID contains 60 random bits # (see RFC4122, Section 4.4) random_bytes = _to_byte_string ( source_uuid . time , 60 ) # The first 12 bytes (= 60 bits) of base32-encoded output is our data encoded = base64 . b32encode ( six . b ( random_bytes ) ) [ : 12 ] if six . PY3 : return encoded . lower ( ) . decode ( 'utf-8' ) else : return encoded . lower ( )