def view_collection(request, collection_head_id): collection_head = Collection_Head().GET(collection_head_id) # get profile id for breadcrumb profile_id = request.session['profile_id'] request.session['collection_head_id'] = collection_head_id # ENA Type Handler----------------------------------- if collection_head['type'].lower() == 'ena submission': # get template for rendering the UI ui_template = DataSchemas("ENA").get_ui_template() if not ui_template: return render(request, 'copo/error_page.html', {'message': UI_ERROR_CODES["TEMPLATE_NOT_FOUND"]}, ) return HttpResponseRedirect(reverse('copo:index')) # get study types study_types = lkup.DROP_DOWNS['STUDY_TYPES'] if 'collection_details' in collection_head: request.session['ena_collection_id'] = str(collection_head['collection_details'][0]) profile = Profile().GET(profile_id) ena_collection = EnaCollection().GET(request.session['ena_collection_id']) sample_attributes = d_utils.get_sample_attributes() messages = {} messages["user_defined_attribute_message"] = lkup.UI_INFO["user_defined_attribute_message"] messages["system_suggested_attribute_message"] = lkup.UI_INFO["system_suggested_attribute_message"] data_dict = {'collection_head': collection_head, 'collection_head_id': collection_head_id, 'ena_collection_id': request.session['ena_collection_id'], 'profile_id': profile_id, 'ena_collection': ena_collection, 'profile': profile, 'ui_template': ui_template, 'study_types': study_types, 'sample_attributes': sample_attributes, 'messages': messages, } else: data_dict = {'collection_head': collection_head, 'collection_head_id': collection_head_id, 'profile_id': profile_id} request.session.delete('collected') return render(request, 'copo/ena_collection_multi.html', data_dict, context_instance=RequestContext(request)) # Figshare Type Handler ------------------------------------- elif collection_head['type'].lower() == 'figshare': articles = FigshareCollection().get_articles_in_collection(collection_head_id) data_dict = {'collection_head': collection_head, 'collection_head_id': collection_head_id, 'profile_id': profile_id, 'articles': articles} return render(request, 'copo/article.html', data_dict, context_instance=RequestContext(request))
def add_to_collection(request): return_structure = {} # get task to be performed task = request.POST['task'] collection_head_id = request.POST['collection_head_id'] collection = Collection_Head().GET(collection_head_id) ena_collection_id = str(collection['collection_details'][0]) if task == "add_new_study": study_fields = request.POST['study_fields'] study_fields = ast.literal_eval(study_fields) # get studies st_list = [] for k, v in study_fields.items(): if k.startswith('study_type_select_'): index_part = k.split("study_type_select_")[1] # only add if a study reference has been provided if 'study_type_reference_' + index_part in study_fields: st_dict = {'study_type': study_fields[k], 'study_type_reference': study_fields['study_type_reference_' + index_part]} st_list.append(st_dict) if st_list: EnaCollection().add_ena_study(ena_collection_id, st_list) return_structure['study_data'] = htags.generate_study_table2(ena_collection_id) elif task == "clone_study": cloned_elements = request.POST['cloned_elements'] cloned_elements = ast.literal_eval(cloned_elements) EnaCollection().clone_ena_study(ena_collection_id, cloned_elements) return_structure['study_data'] = htags.generate_study_table2(ena_collection_id) elif task == "delete_study": study_id = request.POST['study_id'] EnaCollection().delete_study(ena_collection_id, study_id) return_structure['study_data'] = htags.generate_study_table2(ena_collection_id) elif task == "get_tree_study": return_structure['ena_studies'] = htags.get_studies_tree(ena_collection_id) elif task == "get_tree_study_sample": return_structure['ena_studies'] = htags.get_study_sample_tree(ena_collection_id) elif task == "get_study_sample": return_structure['sample_data'] = EnaCollection().get_ena_sample(ena_collection_id, request.POST['sample_id']) return_structure['ena_studies'] = htags.get_study_sample_tree_restrict(ena_collection_id, request.POST['sample_id']) messages = {} messages["edit"] = lkup.UI_LABELS["sample_edit"] messages["clone"] = lkup.UI_LABELS["sample_clone"] messages["add"] = lkup.UI_LABELS["sample_add"] return_structure['messages'] = messages elif task == "get_sample_attributes": return_structure['sample_attributes'] = d_utils.get_sample_attributes() messages = {} messages["system_suggested_attribute_message"] = lkup.UI_INFO["system_suggested_attribute_message"] messages["sample_add"] = lkup.UI_LABELS["sample_add"] return_structure['messages'] = messages elif task == "add_new_study_sample" or task == "edit_study_sample" or task == "clone_study_sample": auto_fields = request.POST['auto_fields'] study_type_list = request.POST['study_types'] if study_type_list: study_type_list = study_type_list.split(",") else: study_type_list = [] if task == "edit_study_sample": sample_id = request.POST['sample_id'] EnaCollection().edit_ena_sample(ena_collection_id, sample_id, study_type_list, auto_fields) else: EnaCollection().add_ena_sample(ena_collection_id, study_type_list, auto_fields) return_structure['sample_data'] = htags.generate_sample_table2(ena_collection_id) return_structure['study_data'] = htags.generate_study_table2(ena_collection_id) return_structure['exit_status'] = 'success' out = jsonpickle.encode(return_structure) return HttpResponse(out, content_type='json')