def get_intermediate_output_data_products()

in airavata_django_portal_sdk/experiment_util/intermediate_output.py [0:0]


def get_intermediate_output_data_products(request, experiment: ExperimentModel, output_name: str) -> List[DataProductModel]:
    """Return the DataProduct instance(s) for a experiment output."""
    output_fetching_processes = _get_output_fetching_processes(experiment)

    data_products = []
    if (len(output_fetching_processes) > 0):
        most_recent_completed_process_output = None
        for process in output_fetching_processes:
            # Skip over any processes that aren't completed
            if (len(process.processStatuses) == 0 or process.processStatuses[-1].state != ProcessState.COMPLETED):
                continue
            for process_output in process.processOutputs:
                if process_output.name == output_name:
                    most_recent_completed_process_output = process_output
                    break
            if most_recent_completed_process_output is not None:
                break
        if most_recent_completed_process_output is not None:
            data_product_uris = []
            if most_recent_completed_process_output.value.startswith('airavata-dp://'):
                data_product_uris = most_recent_completed_process_output.value.split(',')
            for data_product_uri in data_product_uris:
                data_product = request.airavata_client.getDataProduct(
                    request.authz_token, data_product_uri)
                data_products.append(data_product)
    return data_products