示例#1
0
文件: views.py 项目: alexgarciac/COPO
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))
示例#2
0
文件: views.py 项目: alexgarciac/COPO
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')