예제 #1
0
        def wrapper(request, *args, **kwargs):
            """
            Wrapper calls the view function, processes the result and returns
            HttpResponse """

            # call the view function itself...
            context = f(request, *args, **kwargs)

            # if we happen to have a Response, return it
            if isinstance(context, HttpResponse):
                return context

            # get template from view dict. Can be overridden from the **kwargs
            template = 'template' in context and context['template'] or None
            template = kwargs.get('template', template)
            logger.debug("Rendering template: %s" % template)

            # allows us to return the dict as json  (NB: BlitzGateway objects
            # don't serialize)
            if template is None or template == 'json':
                return HttpJsonResponse(context)
            else:
                # allow additional processing of context dict
                ctx.prepare_context(request, context, *args, **kwargs)
                t = template_loader.get_template(template)
                c = RequestContext(request, context)
                return HttpResponse(t.render(c))
예제 #2
0
파일: views.py 프로젝트: IDR/omero-mapr
def api_annotations(request, menu, conn=None, **kwargs):

    mapann_ns = _get_ns(mapr_settings, menu)
    keys = _get_keys(mapr_settings, menu)

    # Get parameters
    try:
        mapann_value = get_str_or_default(request, 'map', None)
        mapann_names = get_list_or_default(request, 'name', keys)
    except ValueError:
        return HttpResponseBadRequest('Invalid parameter value')

    anns = []
    exps = []
    try:
        anns, exps = mapr_tree.load_mapannotation(conn=conn,
                                                  mapann_ns=mapann_ns,
                                                  mapann_names=mapann_names,
                                                  mapann_value=mapann_value)
    except ApiUsageException as e:
        return HttpResponseBadRequest(e.serverStackTrace)
    except ServerError as e:
        return HttpResponseServerError(e.serverStackTrace)
    except IceException as e:
        return HttpResponseServerError(e.message)

    return HttpJsonResponse({'annotations': anns, 'experimenters': exps})
예제 #3
0
파일: views.py 프로젝트: IDR/omero-mapr
def mapannotations_autocomplete(request, menu, conn=None, **kwargs):

    mapann_ns = _get_ns(mapr_settings, menu)
    keys = _get_keys(mapr_settings, menu)

    # Get parameters
    try:
        page = get_long_or_default(request, 'page', 1)
        limit = get_long_or_default(request, 'limit', settings.PAGE)
        group_id = get_long_or_default(request, 'group', -1)
        experimenter_id = get_long_or_default(request, 'experimenter_id', -1)
        query = get_str_or_default(request, 'query', None)
        mapann_names = get_list_or_default(request, 'name', keys)
    except ValueError:
        return HttpResponseBadRequest('Invalid parameter value')

    autocomplete = []
    try:
        autocomplete = mapr_tree.marshal_autocomplete(
            conn=conn,
            query=query,
            mapann_ns=mapann_ns,
            mapann_names=mapann_names,
            group_id=group_id,
            experimenter_id=experimenter_id,
            page=page,
            limit=limit)
    except ApiUsageException as e:
        return HttpResponseBadRequest(e.serverStackTrace)
    except ServerError as e:
        return HttpResponseServerError(e.serverStackTrace)
    except IceException as e:
        return HttpResponseServerError(e.message)

    return HttpJsonResponse(autocomplete)
예제 #4
0
파일: views.py 프로젝트: IDR/omero-mapr
def api_experimenter_list(request, menu, value=None, conn=None, **kwargs):

    mapann_ns = _get_ns(mapr_settings, menu)
    keys = _get_keys(mapr_settings, menu)

    # Get parameters
    try:
        # page = get_long_or_default(request, 'page', 1)
        # limit = get_long_or_default(request, 'limit', settings.PAGE)
        group_id = get_long_or_default(request, 'group', -1)
        experimenter_id = get_long_or_default(request, 'experimenter', -1)
        mapann_value = value or get_str_or_default(request, 'value', None) \
            or get_str_or_default(request, 'id', None)
        mapann_names = get_list_or_default(request, 'name', keys)
        mapann_query = get_str_or_default(request, 'query', None)
    except ValueError:
        return HttpResponseBadRequest('Invalid parameter value')

    try:
        if experimenter_id > -1:
            # Get the experimenter
            experimenter = webclient_tree.marshal_experimenter(
                conn=conn, experimenter_id=experimenter_id)
        else:
            # fake experimenter -1
            experimenter = fake_experimenter(
                mapr_settings.MENU_MAPR[menu]['label'])

        if mapann_value is not None or mapann_query is not None:
            if mapann_query:
                experimenter['extra'] = {'query': mapann_query}
            if mapann_value:
                experimenter['extra'] = {'value': mapann_value}
            # count children
            experimenter['childCount'] = mapr_tree.count_mapannotations(
                conn=conn,
                mapann_ns=mapann_ns,
                mapann_names=mapann_names,
                mapann_value=mapann_value,
                mapann_query=mapann_query,
                group_id=group_id,
                experimenter_id=experimenter_id)

    except ApiUsageException as e:
        return HttpResponseBadRequest(e.serverStackTrace)
    except ServerError as e:
        return HttpResponseServerError(e.serverStackTrace)
    except IceException as e:
        return HttpResponseServerError(e.message)

    return HttpJsonResponse({'experimenter': experimenter})
예제 #5
0
파일: views.py 프로젝트: IDR/omero-mapr
def api_paths_to_object(request, menu=None, value=None, conn=None, **kwargs):
    """
    This override omeroweb.webclient.api_paths_to_object
    to support custom path to map.value
    """

    mapann_ns = _get_ns(mapr_settings, menu)
    keys = _get_keys(mapr_settings, menu)

    try:
        mapann_value = get_str_or_default(request, 'map.value', None)
        mapann_names = get_list_or_default(request, 'name', keys)
    except ValueError:
        return HttpResponseBadRequest('Invalid parameter value')

    if menu in mapr_settings.MENU_MAPR:

        try:
            experimenter_id = get_long_or_default(request, 'experimenter',
                                                  None)
            # project_id = get_long_or_default(request, 'project', None)
            # dataset_id = get_long_or_default(request, 'dataset', None)
            image_id = get_long_or_default(request, 'image', None)
            screen_id = get_long_or_default(request, 'screen', None)
            plate_id = get_long_or_default(request, 'plate', None)
            acquisition_id = get_long_or_default(request, 'run', None)
            # acquisition will override 'run' if both are specified as they are
            # the same thing
            acquisition_id = get_long_or_default(request, 'acquisition',
                                                 acquisition_id)
            # well_id = request.GET.get('well', None)
            group_id = get_long_or_default(request, 'group', None)
        except ValueError:
            return HttpResponseBadRequest('Invalid parameter value')

        paths = mapr_paths_to_object(conn=conn,
                                     mapann_ns=mapann_ns,
                                     mapann_query=value,
                                     mapann_value=mapann_value,
                                     mapann_names=mapann_names,
                                     screen_id=screen_id,
                                     plate_id=plate_id,
                                     image_id=image_id,
                                     experimenter_id=experimenter_id,
                                     group_id=group_id)

        return HttpJsonResponse({'paths': paths})
    return webclient_api_paths_to_object(request, conn=conn, **kwargs)
예제 #6
0
파일: views.py 프로젝트: IDR/omero-mapr
def api_image_list(request, menu, conn=None, **kwargs):

    mapann_ns = _get_ns(mapr_settings, menu)
    keys = _get_keys(mapr_settings, menu)

    # Get parameters
    try:
        page = get_long_or_default(request, 'page', 1)
        limit = get_long_or_default(request, 'limit', settings.PAGE)
        group_id = get_long_or_default(request, 'group', -1)
        load_pixels = get_bool_or_default(request, 'sizeXYZ', False)
        thumb_version = get_bool_or_default(request, 'thumbVersion', False)
        date = get_bool_or_default(request, 'date', False)
        experimenter_id = get_long_or_default(request, 'experimenter_id', -1)
        parent = get_str_or_default(request, 'node', None)
        parent_id = get_long_or_default(request, 'id', None)
        mapann_names = get_list_or_default(request, 'name', keys)
        mapann_value = get_str_or_default(request, 'value', None)
    except ValueError:
        return HttpResponseBadRequest('Invalid parameter value')

    images = []
    try:
        # Get the images
        images = mapr_tree.marshal_images(conn=conn,
                                          parent=parent,
                                          parent_id=parent_id,
                                          mapann_ns=mapann_ns,
                                          mapann_names=mapann_names,
                                          mapann_value=mapann_value,
                                          load_pixels=load_pixels,
                                          group_id=group_id,
                                          experimenter_id=experimenter_id,
                                          page=page,
                                          date=date,
                                          thumb_version=thumb_version,
                                          limit=limit)
    except ApiUsageException as e:
        return HttpResponseBadRequest(e.serverStackTrace)
    except ServerError as e:
        return HttpResponseServerError(e.serverStackTrace)
    except IceException as e:
        return HttpResponseServerError(e.message)

    return HttpJsonResponse({'images': images})
예제 #7
0
파일: views.py 프로젝트: IDR/omero-mapr
def api_plate_list(request, menu, conn=None, **kwargs):

    mapann_ns = _get_ns(mapr_settings, menu)
    keys = _get_keys(mapr_settings, menu)

    # Get parameters
    try:
        page = get_long_or_default(request, 'page', 1)
        limit = get_long_or_default(request, 'limit', settings.PAGE)
        group_id = get_long_or_default(request, 'group', -1)
        experimenter_id = get_long_or_default(request, 'experimenter_id', -1)
        screen_id = get_str_or_default(request, 'id', None)
        mapann_names = get_list_or_default(request, 'name', keys)
        mapann_value = get_str_or_default(request, 'value', None)
    except ValueError:
        return HttpResponseBadRequest('Invalid parameter value')

    plates = []
    try:
        # Get the images
        plates = mapr_tree.marshal_plates(conn=conn,
                                          screen_id=screen_id,
                                          mapann_ns=mapann_ns,
                                          mapann_names=mapann_names,
                                          mapann_value=mapann_value,
                                          group_id=group_id,
                                          experimenter_id=experimenter_id,
                                          page=page,
                                          limit=limit)
    except ApiUsageException as e:
        return HttpResponseBadRequest(e.serverStackTrace)
    except ServerError as e:
        return HttpResponseServerError(e.serverStackTrace)
    except IceException as e:
        return HttpResponseServerError(e.message)

    return HttpJsonResponse({'plates': plates})
예제 #8
0
파일: views.py 프로젝트: IDR/omero-mapr
def api_mapannotation_list(request, menu, conn=None, **kwargs):

    mapann_ns = _get_ns(mapr_settings, menu)
    keys = _get_keys(mapr_settings, menu)

    # Get parameters
    try:
        page = get_long_or_default(request, 'page', 1)
        limit = get_long_or_default(request, 'limit', settings.PAGE)
        group_id = get_long_or_default(request, 'group', -1)
        experimenter_id = get_long_or_default(request, 'experimenter_id', -1)
        mapann_value = get_str_or_default(request, 'id', None) \
            or get_str_or_default(request, 'value', None)
        mapann_names = get_list_or_default(request, 'name', keys)
        mapann_query = get_str_or_default(request, 'query', None)
        orphaned = get_bool_or_default(request, 'orphaned', False)
    except ValueError:
        return HttpResponseBadRequest('Invalid parameter value')

    mapannotations = []
    screens = []
    projects = []
    try:
        # Get attributes from map annotation
        if orphaned:
            if mapann_value is not None or mapann_query is not None:
                mapannotations = mapr_tree.marshal_mapannotations(
                    conn=conn,
                    mapann_ns=mapann_ns,
                    mapann_names=mapann_names,
                    mapann_value=mapann_value,
                    mapann_query=mapann_query,
                    group_id=group_id,
                    experimenter_id=experimenter_id,
                    page=page,
                    limit=limit)
        else:
            screens = mapr_tree.marshal_screens(
                conn=conn,
                mapann_ns=mapann_ns,
                mapann_names=mapann_names,
                mapann_value=mapann_value,
                mapann_query=mapann_query,
                group_id=group_id,
                experimenter_id=experimenter_id,
                page=page,
                limit=limit)
            projects = mapr_tree.marshal_projects(
                conn=conn,
                mapann_ns=mapann_ns,
                mapann_names=mapann_names,
                mapann_value=mapann_value,
                mapann_query=mapann_query,
                group_id=group_id,
                experimenter_id=experimenter_id,
                page=page,
                limit=limit)

    except ApiUsageException as e:
        return HttpResponseBadRequest(e.serverStackTrace)
    except ServerError as e:
        return HttpResponseServerError(e.serverStackTrace)
    except IceException as e:
        return HttpResponseServerError(e.message)

    return HttpJsonResponse({
        'maps': mapannotations,
        'screens': screens,
        'projects': projects
    })