def view(request, dataset_uuid): """View a specific dataset""" if request.user.is_anonymous(): api_client = get_portal_api_client() else: api_client = request.user.agave_oauth.api_client try: dataset = Dataset(api_client=api_client, uuid=dataset_uuid) project = dataset.project data = dataset.data except Exception as e: exception_msg = 'Unable to load process. %s' % e logger.error(exception_msg) messages.warning(request, exception_msg) return HttpResponseRedirect(reverse('ids_projects:project-list-private')) try: process_types = get_process_type_keys(project) dataset_fields = get_dataset_fields(project) dataset.set_fields(dataset_fields) except Exception as e: exception_msg = 'Unable to load config values. %s' % e logger.warning(exception_msg) context = { 'project': project, 'dataset': dataset, 'datas': data, 'process_types': process_types } return render(request, 'ids_projects/datasets/detail.html', context)
def view(request, specimen_uuid): """ """ if request.user.is_anonymous(): api_client = get_portal_api_client() else: api_client = request.user.agave_oauth.api_client try: specimen = Specimen(api_client=api_client, uuid=specimen_uuid) project = specimen.project processes = specimen.processes except Exception as e: exception_msg = 'Unable to load specimen. %s' % e logger.error(exception_msg) messages.warning(request, exception_msg) return HttpResponseRedirect('/projects') try: process_types = get_process_type_keys(project) specimen_fields = get_specimen_fields(project) specimen.set_fields(specimen_fields) context = {'project': project, 'specimen': specimen, 'processes': processes, 'process_types': process_types} return render(request, 'ids_projects/specimens/detail.html', context) except Exception as e: exception_msg = 'Unable to load config values. %s' % e logger.warning(exception_msg) messages.warning(request, exception_msg) return HttpResponseRedirect(reverse('ids_projects:project-list-private'))
def view(request, project_uuid): """Queries project metadata and all associated metadata""" if request.user.is_anonymous(): api_client = get_portal_api_client() else: # api_client = get_portal_api_client() api_client = request.user.agave_oauth.api_client try: project = Project(api_client=api_client, uuid=project_uuid) except Exception as e: exception_msg = 'Unable to load project. %s' % e logger.error(exception_msg) messages.error(request, exception_msg) return HttpResponseRedirect('/projects/') try: process_types = get_process_type_keys(project) project_fields = get_project_form_fields() project.set_fields(project_fields) investigation_type = get_investigation_type(project) context = {'project': project, 'investigation_type': investigation_type, 'process_types': process_types} return render(request, 'ids_projects/projects/detail.html', context) except Exception as e: exception_msg = 'Unable to load config values. %s' % e logger.warning(exception_msg) messages.warning(request, exception_msg) return HttpResponseRedirect( reverse('ids_projects:project-list-private'))
def view(request, process_uuid): """ """ if request.user.is_anonymous(): api_client = get_portal_api_client() else: api_client = request.user.agave_oauth.api_client try: process = Process(api_client=api_client, uuid=process_uuid) project = process.project specimen = process.specimen data = process.data inputs = process.inputs outputs = process.outputs except Exception as e: exception_msg = "Unable to load process. %s" % e logger.error(exception_msg) messages.warning(request, exception_msg) return HttpResponseRedirect(reverse("ids_projects:project-list-private")) try: process_types = get_process_type_keys(project) process_fields = get_process_fields(project, process.value["process_type"]) process.set_fields(process_fields) except Exception as e: exception_msg = "Unable to load config values. %s" % e logger.warning(exception_msg) context = { "process": process, "project": project, "specimen": specimen, "datas": data, "inputs": inputs, "outputs": outputs, "process_types": process_types, } return render(request, "ids_projects/processes/detail.html", context)
def select_data(request, dataset_uuid): """List data to add to dataset.""" api_client = request.user.agave_oauth.api_client try: dataset = Dataset(api_client=api_client, uuid=dataset_uuid) project = dataset.project dataset_data = [x.uuid for x in dataset.data] project_data = [x.uuid for x in project.data] except Exception as e: exception_msg = 'Unable to load process. %s' % e logger.error(exception_msg) messages.warning(request, exception_msg) return HttpResponseRedirect(reverse('ids_projects:project-list-private')) try: process_types = get_process_type_keys(project) dataset_fields = get_dataset_fields(project) dataset.set_fields(dataset_fields) except Exception as e: exception_msg = 'Unable to load config values. %s' % e logger.warning(exception_msg) ####### # GET # ####### if request.method == 'GET': context = {'project': project, 'dataset': dataset, 'datas': dataset_data, 'process_types': process_types} return render(request, 'ids_projects/datasets/select_data.html', context) ######## # POST # ######## elif request.method == 'POST': # TODO: this is probably not the best way to do this body = urllib.unquote(request.body) selected_data = [] if body: response_tuples = map(lambda x: (x.split('=')[0], x.split('=')[1]), body.split('&')) selected_data = [] for key, value in response_tuples: selected_data.append(value) unselected_data = list(set(project_data) - set(selected_data)) data_to_remove = filter(lambda x: x in dataset_data, unselected_data) data_to_add = list(set(selected_data) - set(dataset_data)) # remove unselected data try: if data_to_remove: for data_uuid in data_to_remove: data = Data(api_client=api_client, uuid=data_uuid) logger.debug('removing: "%s" from dataset: "%s"' % (data.name, dataset.title)) data.remove_container(dataset) data.save() dataset.remove_part(data) dataset.save() except HTTPError as e: exception_msg = 'Unable to remove data from dataset. %s' % e logger.error(exception_msg) messages.error(request, exception_msg) return HttpResponseRedirect( reverse('ids_projects:dataset-view', kwargs={'dataset_uuid': dataset.uuid})) # add selected data try: if data_to_add: for data_uuid in data_to_add: data = Data(api_client=api_client, uuid=data_uuid) logger.debug('adding: "%s" to dataset: "%s"' % (data.name, dataset.title)) data.add_container(dataset) data.save() dataset.add_part(data) dataset.save() success_msg = 'Successfully added data to dataset.' logger.info(success_msg) messages.success(request, success_msg) return HttpResponseRedirect(reverse('ids_projects:dataset-view', kwargs={'dataset_uuid': dataset.uuid})) except HTTPError as e: exception_msg = 'Unable to select data. %s' % e logger.error(exception_msg) messages.error(request, exception_msg) return HttpResponseRedirect( reverse('ids_projects:dataset-view', kwargs={'dataset_uuid': dataset.uuid}))