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))
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})
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)
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})
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)
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})
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})
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 })