def user_files_csv(request): assay_uuid = request.GET.get("assay_uuid") if assay_uuid is not None: solr_params = generate_solr_params_for_assay(request.GET, assay_uuid) solr_response = search_solr(solr_params, 'data_set_manager') else: solr_response = _get_solr(request.GET, request.user.id) response = HttpResponse(content_type='text/csv') response['Content-Disposition'] = 'attachment; filename="user-files.csv"' cols = settings.USER_FILES_COLUMNS.split(',') writer = csv.writer(response) writer.writerow(['url'] + cols) # DOWNLOAD_URL's internal solr name not good for end-user. docs = loads(solr_response)['response']['docs'] for doc in docs: row = [doc.get(NodeIndex.DOWNLOAD_URL) or ''] for col in cols: possibly_unicode = (doc.get(col + '_Characteristics_generic_s') or doc.get(col + '_Factor_Value_generic_s') or doc.get(col) or '') row.append(unidecode(possibly_unicode)) writer.writerow(row) return response
def user_files_csv(request): assay_uuid = request.GET.get("assay_uuid") if assay_uuid is not None: solr_params = generate_solr_params_for_assay(request.GET, assay_uuid) solr_response = search_solr(solr_params, 'data_set_manager') else: solr_response = _get_solr(request.GET, request.user.id) response = HttpResponse(content_type='text/csv') response['Content-Disposition'] = 'attachment; filename="user-files.csv"' cols = settings.USER_FILES_COLUMNS.split(',') writer = csv.writer(response) writer.writerow(['url'] + cols) # DOWNLOAD_URL's internal solr name not good for end-user. docs = loads(solr_response)['response']['docs'] for doc in docs: row = [doc.get(NodeIndex.DOWNLOAD_URL) or ''] for col in cols: possibly_unicode = ( doc.get(col + '_Characteristics_generic_s') or doc.get(col + '_Factor_Value_generic_s') or doc.get(col) or '' ) row.append(unidecode(possibly_unicode)) writer.writerow(row) return response
def _get_solr(params, user_id): solr_params = generate_solr_params_for_user( params, user_id=user_id) if solr_params is None: return dumps({ 'responseHeader': {}, 'response': { 'docs': [] } }) return search_solr(solr_params, 'data_set_manager')
def filter_nodes_uuids_in_solr(assay_uuid, filter_out_uuids=[], filter_attribute={}): """ Helper method to create a current selection group which is default for all node_group list :param assay_uuid: unicode, string :param filter_out_uuids: array of unicode, string :param filter_attribute: object of attributes and their filtered fields :return: List of uuids """ # Params required to filter solr_request to just get uuids for nodes params = { 'attributes': 'uuid', 'facets': 'uuid', 'limit': 10000000, 'include_facet_count': 'false' } # Add attribute filters and facet params to generate solr_params if filter_attribute: params['filter_attribute'] = filter_attribute # unicode to object to grab keys if isinstance(filter_attribute, unicode): # handling unicode sent by swagger params['facets'] = ','.join( ast.literal_eval(filter_attribute).keys() ) else: params['facets'] = ','.join(filter_attribute.keys()) solr_params = generate_solr_params(params, assay_uuid) # Only require solr filters if exception uuids are passed if filter_out_uuids: # node_arr = str(filter_out_uuids).split(',') str_nodes = (' OR ').join(filter_out_uuids) field_filter = "&fq=-uuid:({})".format(str_nodes) solr_params = ''.join([solr_params, field_filter]) solr_response = search_solr(solr_params, 'data_set_manager') solr_reponse_json = format_solr_response(solr_response) uuid_list = [] for node in solr_reponse_json.get('nodes'): uuid_list.append(node.get('uuid')) return uuid_list