Example #1
0
def edit_data(request):
    context = {}
    task = request.POST['task']
    profile_id = request.session['profile_id']

    if task == 'data':
        context['table_data'] = htags.generate_copo_datafiles_data(profile_id)
    if task == 'wiz':
        context['wiz_message'] = lkup.DF_WIZARD

    out = jsonpickle.encode(context)
    return HttpResponse(out, content_type='json')
Example #2
0
def inspect_file(request):
    # utillity method to examine a file and return meta-data to the frontend
    output_dict = {'file_type': 'unknown', 'do_compress': False}
    # get reference to file
    file_id = request.GET['file_id']
    chunked_upload = ChunkedUpload.objects.get(id=int(file_id))
    file_name = os.path.join(MEDIA_ROOT, chunked_upload.file.name)

    # size threshold to determine if a file should be compressed
    zip_threshold = 200000000  # size in bytes

    # check if file is compressed
    is_zipped = u.is_gzipped(file_name)

    if chunked_upload.offset >= zip_threshold and not is_zipped:
        output_dict['do_compress'] = True

    # check for file type
    if u.is_pdf_file(file_name):
        output_dict['file_type'] = 'pdf'
    else:
        try:
            if (u.is_fastq_file(file_name)):
                output_dict['file_type'] = 'fastq'
            elif (u.is_sam_file(file_name)):
                output_dict['file_type'] = 'sam'
            elif (u.is_bam_file(file_name)):
                output_dict['file_type'] = 'bam'
        except:
            output_dict['file_type'] = ''

    # add datafile schema
    chunked_upload.type = output_dict['file_type']
    chunked_upload.save()

    # ...and obtain the inserted record
    profile_id = request.session['profile_id']
    df = DataFile(profile_id).save_datafile(file_id)
    output_dict['data_file_id'] = str(df["_id"])
    output_dict['table_data'] = htags.generate_copo_datafiles_data(profile_id, df)

    out = jsonpickle.encode(output_dict)
    return HttpResponse(out, content_type='json')