Exemplo n.º 1
0
def idba(request):
    response_dict = dict(settings.TEMPLATE_ARGS_BY_DEFAULT)
    response_dict.update(get_report_response_dict(os.path.join(settings.IDBA_DIRPATH)))

    response_dict['hide_date'] = True
    response_dict['data_set'] = {
        'title': 'E. coli, single-cell',
    }
    return render_to_response('examples/idba.html', response_dict)
Exemplo n.º 2
0
def example(request):
    response_dict = dict(settings.TEMPLATE_ARGS_BY_DEFAULT)
    response_dict.update(get_report_response_dict(settings.EXAMPLE_DIRPATH))
    response_dict['title'] = response_dict['caption'] = 'Sample report'
    response_dict['hide_date'] = True
    response_dict['data_set'] = {
        'title': 'E. coli, single-cell',
    }
    return render_to_response('report.html', response_dict)
Exemplo n.º 3
0
def common_view(dir_name, caption, slug_name, download_fname, template_dir_name=None,
                html_template_name=None, data_set_name=None, title=None):
    template_dir_name = 'examples/' + (template_dir_name or dir_name)
    html_template_name = html_template_name or slug_name

    if download_fname:
        download_fpath = os.path.join(settings.FILES_DOWNLOADS_DIRPATH, download_fname)

        if os.path.exists(download_fpath):
          # if download_fname[-4:] == '.zip':
          #     mimetype = 'application/zip'
          # else:
          # mimetype = 'application/force-download'

          # f = FileWrapper(fpath)
          # response = HttpResponse(mimetype=mimetype)
          # response['Content-Disposition'] = 'attachment; filename=%s' % download_fname
          # response['X-Sendfile'] = download_fpath
          # response['Content-Length'] = 100
          # return response

            wrapper = FileWrapper(open(download_fpath, 'r'))
            content_type = mimetypes.guess_type(download_fpath)[0]

            response = HttpResponse(wrapper, content_type=content_type)
            response['Content-Length'] = os.path.getsize(download_fpath)
            response['Content-Disposition'] = 'attachment; filename=' + smart_str(download_fname)

            return response

        else:
            raise Http404('File %s does not exist' % download_fname)

    else:
        response_dict = dict(settings.TEMPLATE_ARGS_BY_DEFAULT)

        report_dict = get_report_response_dict(
            os.path.join(settings.FILES_DIRPATH, dir_name, slug_name))
        response_dict.update(report_dict)

        response_dict['caption'] = caption
        response_dict['title'] = title
        response_dict['hide_date'] = True

        response_dict['download_link'] = slug_name + '_quast_report.zip'
        response_dict['download_text'] = download_text

        response_dict['data_set'] = {
            'title': data_set_name,
        }

        return render_to_response(template_dir_name + html_template_name + '.html', response_dict)
def common_view(dir_name, caption, slug_name, download_fname):
    if download_fname:
        download_fpath = os.path.join(settings.FILES_DOWNLOADS_DIRPATH, slug_name, download_fname)

        if os.path.exists(download_fpath):
          # if download_fname[-4:] == '.zip':
          #     mimetype = 'application/zip'
          # else:
          # mimetype = 'application/force-download'

          # f = FileWrapper(fpath)
          # response = HttpResponse(mimetype=mimetype)
          # response['Content-Disposition'] = 'attachment; filename=%s' % download_fname
          # response['X-Sendfile'] = download_fpath
          # response['Content-Length'] = 100
          # return response

            wrapper = FileWrapper(open(download_fpath, 'r'))
            content_type = mimetypes.guess_type(download_fpath)[0]

            response = HttpResponse(wrapper, content_type=content_type)
            response['Content-Length'] = os.path.getsize(download_fpath)
            response['Content-Disposition'] = 'attachment; filename=' + smart_str(download_fname)

            return response

        else:
            raise Http404('File %s does not exist' % download_fname)

    else:
        response_dict = settings.TEMPLATE_ARGS_BY_DEFAULT

        report_dict = get_report_response_dict(
            os.path.join(settings.PAPER_DIRPATH, slug_name),
            caption,
            link=slug_name + '_quast_report.zip'
        )
        response_dict.update(report_dict)

        response_dict['download'] = True
        # response_dict['download_link'] = slug_name + '_quast_report.zip'
        response_dict['download_text'] = download_text

        return render_to_response(dir_name + slug_name + '.html', response_dict)
Exemplo n.º 5
0
def report_view(dir_name, caption, slug_name, template_dir_name=None,
                html_template_name=None, data_set_name=None, title=None):
    template_dir_name = 'examples/' + (template_dir_name or dir_name)
    html_template_name = html_template_name or slug_name

    response_dict = dict(settings.TEMPLATE_ARGS_BY_DEFAULT)

    report_dict = get_report_response_dict(os.path.join(settings.FILES_DIRPATH, dir_name, slug_name))
    response_dict.update(report_dict)

    response_dict['caption'] = caption
    response_dict['title'] = title
    response_dict['hide_date'] = True

    response_dict['download_link'] = slug_name + '_quast_report.zip'
    response_dict['download_text'] = download_text
    response_dict['download'] = True

    response_dict['data_set'] = {
        'title': data_set_name,
    }

    return render_to_response(template_dir_name + html_template_name + '.html', response_dict)
Exemplo n.º 6
0
def index_view(us, response_dict, request):
    # Evaluation
    if request.method == 'POST':
        log_msg = 'Somebody posted a form:'
        for k, v in request.POST.items():
            if k == 'contigs:':
                log_msg += '\n\t%s' % k
                for contig in v.split('\n'):
                    log_msg += '\n\t\t%s' % contig
            else:
                log_msg += '\n\t%s:\t%s' % (str(k), str(v))
        # mailer.info(log_msg)

        form = DataSetForm(us, request.POST)

        report_id = form.data.get('report_id')
        if not report_id:
            logger.error('data_set_form.data.get(\'report_id\') is None')
            return HttpResponseBadRequest('No report_id in form')

        try:
            qs = QuastSession.objects.get(report_id=report_id)
        except QuastSession.DoesNotExist:
            logger.error('QuastSession with report_id=%s does not exist' % report_id)
            return HttpResponseBadRequest('No quast session with report_id=%s' % report_id)
        else:
            #TODO: Temporary, used because user_session was always deleted when registering a user
            if not qs.user_session:
                qs.user_session = us
            #TODO: End of temporary

            # Contigs fnames from this form
            # contigs_in_form = data_set_form.data.get('contigs')
            #
            # split = contigs_in_form.split('\r\n')
            # if len(split) == 1:
            #     split = contigs_in_form.split('\n')
            # if len(split) == 1:
            #     logger.error('No contigs fnames got from "data_set_form.contigs": the value got is %s', str(contigs_in_form))
            #     return HttpResponseBadRequest("Error: no contigs loaded")

            # contigs_fnames = split[:-1]

        if form.is_valid():
            qs.submitted = True

            qs.min_contig = form.cleaned_data['min_contig']
            qs.scaffolds = form.cleaned_data['scaffolds']
            qs.eukaryotic = form.cleaned_data['domain'] == 'True'
            qs.estimated_ref_size = form.cleaned_data['estimated_ref_size']
            qs.find_genes = form.cleaned_data['find_genes']
            qs.data_set = get_data_set(request, form, us, default_name=qs.report_id)

            us.set_min_contig(qs.min_contig)
            us.set_scaffolds(qs.scaffolds)
            us.set_eukaryotic(qs.eukaryotic)
            us.set_estimated_ref_size(qs.estimated_ref_size)
            us.set_find_genes(qs.find_genes)
            us.set_default_data_set(qs.data_set)
            us.save()

            qs.comment = form.cleaned_data.get('comment')
            qs.caption = form.cleaned_data.get('caption')
            qs.generate_link()
            qs.save()

            logger.info('quast_app.views.index.POST: '
                        'caption = %s, link = %s, data set = %s, '
                        'min_contig = %d, scaffolds = %r, eukaryotic = %r, find_genes = %r',
                        qs.caption, qs.get_report_html_link(), qs.data_set.name if qs.data_set else '<unknown>',
                        qs.min_contig, qs.scaffolds, qs.eukaryotic, qs.find_genes)

            # Starting Quast
            start_quast_session(us, qs)
            # return HttpResponseRedirect(reverse('True}))

            request.session['after_evaluation'] = True
            # return redirect('quast_app.views.index')
            return HttpResponseRedirect(reverse("quast_app.views.index"))

            # return redirect('quast_app.views.report', link=quast_session.link)
        else:
            logger.info('quast_app.views.index.POST: form invalid, errors are: = %s', str(form.errors.items()))

    elif request.method == 'GET':
        # min_contig = request.session.get('min_contig') or qconfig.min_contig
        # scaffolds = request.session.get('scaffolds') or False
        # eukaryotic = request.session.get('eukaryotic') or False
        # estimated_ref_size = request.session.get('estimated_ref_size') or None
        # find_genes = request.session.get('find_genes') or False

        qs = QuastSession.create(us)
        form = DataSetForm(us, initial={
            'report_id': qs.report_id,
            'name_selected': qs.data_set.name if qs.data_set else None,
            'min_contig': qs.min_contig,
            'scaffolds': qs.scaffolds,
            'domain': qs.eukaryotic,
            'estimated_ref_size': qs.estimated_ref_size,
            'find_genes': qs.find_genes,
        })

        response_dict['report_id'] = qs.report_id

        # Default data set for this user
        # if user_session.get_default_data_set():
        #     default_data_set_name = user_session.get_default_data_set().name
        # else:
        #     default_data_set_name = request.session.get('default_data_set_name') or ''
        #     if default_data_set_name:
        #         try:
        #             default_data_set = DataSet.objects.get(name=default_data_set_name)
        #             user_session.set_default_data_set(default_data_set)
        #         except DataSet.DoesNotExist:
        #             pass
        #
        # form.set_default_data_set_name(default_data_set_name)

    else:
        logger.warn('Request method is %s' % request.method)
        return HttpResponseBadRequest("GET and POST are only supported here")

    # uploaded_contigs_fnames = [c_f.fname for c_f in user_session.contigsfile_set.all()]

    response_dict.update({
        'csrf_token': get_token(request),
        'contigs_fnames': [],
        'contig_max_size_mb': settings.CONTIG_MAX_SIZE_MB,
        'qs_form': form,
        'email': us.get_email(),
        'session_key': us.session_key,
        'is_authorized': us.user is not None,
    })

    # REPORTS
    response_dict.update(get_reports_response_dict(
        us,
        after_evaluation=request.session.get('after_evaluation', False),
        limit=settings.REPORTS_SHOW_LIMIT))

    request.session['after_evaluation'] = False

    # EXAMPLE
    response_dict.update(get_report_response_dict(settings.EXAMPLE_DIRPATH))
    response_dict['hide_date'] = True
    response_dict['data_set'] = {
        'title': 'E. coli, single-cell',
    }

    return render_to_response(
        'index.html',
        response_dict,
        context_instance=RequestContext(request))