Exemple #1
0
def analysis_status(request, uuid):
    """Returns analysis status in HTML or JSON formats (for AJAX requests)"""
    # TODO: handle MultipleObjectsReturned exception
    try:
        analysis = Analysis.objects.get(uuid=uuid)
    except Analysis.DoesNotExist:
        logger.error("Analysis with UUID '%s' does not exist", uuid)
        return HttpResponse(custom_error_page(request, '404.html', {}),
                            status='404')

    # TODO: handle MultipleObjectsReturned exception
    try:
        status = AnalysisStatus.objects.get(analysis=analysis)
    except AnalysisStatus.DoesNotExist:
        logger.error("AnalysisStatus object does not exist for Analysis '%s'",
                     analysis.name)
        return HttpResponse(custom_error_page(request, '500.html', {}),
                            status='500')

    # add analysis status message if request came from this view
    referer_path = urlparse(request.META.get('HTTP_REFERER', '')).path
    if referer_path == request.path:
        # clear messages to avoid message duplication
        storage = messages.get_messages(request)
        storage.used = True
        # add analysis status message
        if analysis.get_status() == Analysis.FAILURE_STATUS:
            msg = "Analysis '{}' failed. No results were added to your data " \
                  "set.".format(analysis.name)
            messages.error(request, msg)
        elif analysis.get_status() == Analysis.SUCCESS_STATUS:
            msg = "Analysis '{}' finished successfully. View the results in " \
                  "the file browser.".format(analysis.name)
            messages.success(request, msg)

    if request.is_ajax():
        ret_json = {
            'refineryImport': status.refinery_import_state(),
            'galaxyAnalysis': status.galaxy_analysis_state(),
            'galaxyExport': status.galaxy_export_state(),
            'overall': analysis.get_status(),
        }
        if analysis.is_tool_based:
            ret_json['galaxyImport'] = (
                status.tool_based_galaxy_file_import_state())
        else:
            ret_json['galaxyImport'] = status.galaxy_file_import_state()

        logger.debug("Analysis status for '%s': %s", analysis.name,
                     json.dumps(ret_json))
        return HttpResponse(json.dumps(ret_json, indent=4),
                            content_type='application/javascript')
    return render_to_response('analysis_manager/analysis_status.html', {
        'uuid': uuid,
        'status': status,
        'analysis': analysis
    },
                              context_instance=RequestContext(request))
def analysis_status(request, uuid):
    logger.debug("analysis_manager.views.analysis_status called")
    #TODO: handle MultipleObjectsReturned exception
    try:
        analysis = Analysis.objects.get(uuid=uuid)
    except Analysis.DoesNotExist:
        logger.error("Analysis with UUID '{}' does not exist".format(uuid))
        return HttpResponse(custom_error_page(request, '404.html', {}),
                            status='404')

    #TODO: handle MultipleObjectsReturned exception
    try:
        status = AnalysisStatus.objects.get(analysis=analysis)
    except AnalysisStatus.DoesNotExist:
        logger.error(
            "AnalysisStatus object does not exist for Analysis '{}'".format(
                analysis.name))
        return HttpResponse(custom_error_page(request, '500.html', {}),
                            status='500')

    # add analysis status message if request came from this view
    referer_path = urlparse(request.META.get('HTTP_REFERER', '')).path
    if referer_path == request.path:
        # clear messages to avoid message duplication
        storage = messages.get_messages(request)
        storage.used = True
        # add analysis status message
        if analysis.get_status() == Analysis.FAILURE_STATUS:
            msg = "Analysis '{}' failed.  No results were added to your data set."\
                  .format(analysis.name)
            messages.error(request, msg)
        elif analysis.get_status() == Analysis.SUCCESS_STATUS:
            msg = "Analysis '{}' finished successfully.  View the results in the file browser."\
                  .format(analysis.name)
            messages.success(request, msg)

    if request.is_ajax():
        ret_json = {}
        if status:
            ret_json['preprocessing'] = status.preprocessing_status()
            ret_json['execution'] = status.execution_status()
            ret_json['postprocessing'] = status.postprocessing_status()
            ret_json['cleanup'] = status.cleanup_status()
            ret_json['overall'] = analysis.get_status()
        logger.debug("Analysis: '{}'".format(analysis.name))
        logger.debug(simplejson.dumps(ret_json, indent=2))
        return HttpResponse(simplejson.dumps(ret_json),
                            mimetype='application/javascript')
    else:
        return render_to_response('analysis_manager/analysis_status.html', {
            'uuid': uuid,
            'status': status,
            'analysis': analysis
        },
                                  context_instance=RequestContext(request))
def analysis_status(request, uuid):
    logger.debug("analysis_manager.views.analysis_status called")
    # TODO: handle MultipleObjectsReturned exception
    try:
        analysis = Analysis.objects.get(uuid=uuid)
    except Analysis.DoesNotExist:
        logger.error("Analysis with UUID '{}' does not exist".format(uuid))
        return HttpResponse(custom_error_page(request, '404.html', {}),
                            status='404')

    # TODO: handle MultipleObjectsReturned exception
    try:
        status = AnalysisStatus.objects.get(analysis=analysis)
    except AnalysisStatus.DoesNotExist:
        logger.error("AnalysisStatus object does not exist for Analysis '{}'"
                     .format(analysis.name))
        return HttpResponse(custom_error_page(request, '500.html', {}),
                            status='500')

    # add analysis status message if request came from this view
    referer_path = urlparse(request.META.get('HTTP_REFERER', '')).path
    if referer_path == request.path:
        # clear messages to avoid message duplication
        storage = messages.get_messages(request)
        storage.used = True
        # add analysis status message
        if analysis.get_status() == Analysis.FAILURE_STATUS:
            msg = "Analysis '{}' failed. " \
                  "No results were added to your data set."\
                  .format(analysis.name)
            messages.error(request, msg)
        elif analysis.get_status() == Analysis.SUCCESS_STATUS:
            msg = "Analysis '{}' finished successfully. " \
                  "View the results in the file browser."\
                  .format(analysis.name)
            messages.success(request, msg)

    if request.is_ajax():
        ret_json = {}
        if status:
            ret_json['preprocessing'] = status.preprocessing_status()
            ret_json['execution'] = status.execution_status()
            ret_json['postprocessing'] = status.postprocessing_status()
            ret_json['cleanup'] = status.cleanup_status()
            ret_json['overall'] = analysis.get_status()
        logger.debug("Analysis: '%s'", analysis.name)
        logger.debug(simplejson.dumps(ret_json))
        return HttpResponse(simplejson.dumps(ret_json),
                            mimetype='application/javascript')
    else:
        return render_to_response(
            'analysis_manager/analysis_status.html',
            {'uuid': uuid, 'status': status, 'analysis': analysis},
            context_instance=RequestContext(request))
Exemple #4
0
def analysis_status(request, uuid):
    """Returns analysis status in HTML or JSON formats (for AJAX requests)"""
    # TODO: handle MultipleObjectsReturned exception
    try:
        analysis = Analysis.objects.get(uuid=uuid)
    except Analysis.DoesNotExist:
        logger.error("Analysis with UUID '{}' does not exist".format(uuid))
        return HttpResponse(custom_error_page(request, '404.html', {}),
                            status='404')

    # TODO: handle MultipleObjectsReturned exception
    try:
        status = AnalysisStatus.objects.get(analysis=analysis)
    except AnalysisStatus.DoesNotExist:
        logger.error("AnalysisStatus object does not exist for Analysis '{}'"
                     .format(analysis.name))
        return HttpResponse(custom_error_page(request, '500.html', {}),
                            status='500')

    # add analysis status message if request came from this view
    referer_path = urlparse(request.META.get('HTTP_REFERER', '')).path
    if referer_path == request.path:
        # clear messages to avoid message duplication
        storage = messages.get_messages(request)
        storage.used = True
        # add analysis status message
        if analysis.get_status() == Analysis.FAILURE_STATUS:
            msg = "Analysis '{}' failed. No results were added to your data " \
                  "set.".format(analysis.name)
            messages.error(request, msg)
        elif analysis.get_status() == Analysis.SUCCESS_STATUS:
            msg = "Analysis '{}' finished successfully. View the results in " \
                  "the file browser.".format(analysis.name)
            messages.success(request, msg)

    if request.is_ajax():
        ret_json = {
            'refineryImport': status.refinery_import_state(),
            'galaxyImport': status.galaxy_import_state(),
            'galaxyAnalysis': status.galaxy_analysis_state(),
            'galaxyExport': status.galaxy_export_state(),
            'overall': analysis.get_status(),
        }
        logger.debug("Analysis status for '%s': %s",
                     analysis.name, json.dumps(ret_json))
        return HttpResponse(json.dumps(ret_json, indent=4),
                            mimetype='application/javascript')
    else:
        return render_to_response(
            'analysis_manager/analysis_status.html',
            {'uuid': uuid, 'status': status, 'analysis': analysis},
            context_instance=RequestContext(request))