Gets upload path in this format: {MODEL_NAME}/{SAFE_UPLOADED_FILENAME}{SEPARATOR}{UUID4}{SUFFIX}.
    Use this function to prevent any collisions with existing files in same folder.

    :param instance: Instance of model or model class.
    :param filename: Uploaded file name.
    :return: Target upload path.

def auto_cleaned_path_uuid4(instance, filename: str) -> str:
    """
    Gets upload path in this format: {MODEL_NAME}/{SAFE_UPLOADED_FILENAME}{SEPARATOR}{UUID4}{SUFFIX}.
    Use this function to prevent any collisions with existing files in same folder.

    :param instance: Instance of model or model class.
    :param filename: Uploaded file name.
    :return: Target upload path.
    """
    stem, suffix = parse_filename(filename)
    base_dir = get_base_dir_from_object(instance)
    target_filename = get_safe_path_name(stem)
    rand_uuid = uuid.uuid4()

    return os.path.join(base_dir, "{target_filename}{SEPARATOR}{rand_uuid}{suffix}".format(target_filename=target_filename,
                                                                                           SEPARATOR=SEPARATOR,
                                                                                           rand_uuid=rand_uuid,
                                                                                           suffix=suffix))