def test_plugin_compatibility(self): """Default plugins perform as expected """ # Upload a raster and a vector data set hazard_filename = os.path.join(TESTDATA, 'shakemap_padang_20090930.asc') hazard_layer = save_to_geonode(hazard_filename) check_layer(hazard_layer, full=True) exposure_filename = os.path.join(TESTDATA, 'lembang_schools.shp') exposure_layer = save_to_geonode(exposure_filename) check_layer(exposure_layer, full=True) # Test plugin_list = get_plugins() assert len(plugin_list) > 0 geoserver = {'url': settings.GEOSERVER_BASE_URL + 'ows', 'name': 'Local Geoserver', 'version': '1.0.0', 'id': 0} metadata = get_layer_descriptors(geoserver['url']) msg = 'There were no layers in test geoserver' assert len(metadata) > 0, msg # Characterisation test to preserve the behaviour of # get_layer_descriptors. FIXME: I think we should change this to be # a dictionary of metadata entries (ticket #126). reference = [['geonode:lembang_schools', {'layer_type': 'feature', 'category': 'exposure', 'subcategory': 'building', 'title': 'lembang_schools'}], ['geonode:shakemap_padang_20090930', {'layer_type': 'raster', 'category': 'hazard', 'subcategory': 'earthquake', 'title': 'shakemap_padang_20090930'}]] for entry in reference: name, mdblock = entry i = [x[0] for x in metadata].index(name) assert name == metadata[i][0] for key in entry[1]: assert entry[1][key] == metadata[i][1][key] # Check plugins are returned annotated_plugins = [{'name': name, 'doc': f.__doc__, 'layers': compatible_layers(f, metadata)} for name, f in plugin_list.items()] msg = 'No compatible layers returned' assert len(annotated_plugins) > 0, msg
def functions(request): """Get a list of all the functions Will provide a list of plugin functions and the layers that the plugins will work with. Takes geoserver urls as a GET parameter can have a comma separated list e.g. http://127.0.0.1:8000/riab/api/v1/functions/?geoservers=http:... assumes version 1.0.0 """ plugin_list = get_plugins() if 'geoservers' in request.GET: # FIXME for the moment assume version 1.0.0 geolist = request.GET['geoservers'].split(',') geoservers = [{'url': geoserver, 'version': '1.0.0'} for geoserver in geolist] else: geoservers = get_servers(request.user) layers_metadata = [] # Iterate across all available geoservers and return every layer # and associated keywords for geoserver in geoservers: layers_metadata.extend( get_layers_metadata(geoserver['url'], geoserver['version'])) # For each plugin return all layers that meet the requirements # an empty layer is returned where the plugin cannot run annotated_plugins = [] for name, f in plugin_list.items(): layers = compatible_layers(f, layers_metadata) annotated_plugins.append({ 'name': name, 'doc': f.__doc__, 'layers': layers, }) output = {'functions': annotated_plugins} jsondata = json.dumps(output) return HttpResponse(jsondata, mimetype='application/json')
def functions(request): """Get a list of all the functions Will provide a list of plugin functions and the layers that the plugins will work with. Takes geoserver urls as a GET parameter can have a comma separated list e.g. http://127.0.0.1:8000/riab/api/v1/functions/?geoservers=http:... assumes version 1.0.0 """ plugin_list = get_plugins() if 'geoservers' in request.GET: # FIXME for the moment assume version 1.0.0 geolist = request.GET['geoservers'].split(',') geoservers = [{'url': geoserver, 'version': '1.0.0'} for geoserver in geolist] else: geoservers = get_servers(request.user) # Iterate across all available geoservers and return all # layer descriptors for use with the plugin subsystem layer_descriptors = [] for geoserver in geoservers: layer_descriptors.extend( get_layer_descriptors(geoserver['url'])) # For each plugin return all layers that meet the requirements # an empty layer is returned where the plugin cannot run annotated_plugins = [] for name, f in plugin_list.items(): layers = compatible_layers(f, layer_descriptors) annotated_plugins.append({'name': name, 'doc': f.__doc__, 'layers': layers}) output = {'functions': annotated_plugins} jsondata = json.dumps(output) return HttpResponse(jsondata, mimetype='application/json')
def test_plugin_compatability(self): """Performance of the default plugins using internal GeoServer """ plugin_list = get_plugins() assert len(plugin_list) > 0 geoserver = {'url': settings.GEOSERVER_BASE_URL + 'ows', 'name': 'Local Geoserver', 'version': '1.0.0', 'id': 0} layers = get_layers_metadata(geoserver['url'], geoserver['version']) msg = 'There were no layers in test geoserver' assert len(layers) > 0, msg annotated_plugins = [{'name': name, 'doc': f.__doc__, 'layers': compatible_layers(f, layers)} for name, f in plugin_list.items()] msg = 'No compatible layers returned' assert len(annotated_plugins) > 0, msg
def test_plugin_compatibility(self): """Default plugins perform as expected """ # Upload a raster and a vector data set hazard_filename = os.path.join(TESTDATA, 'shakemap_padang_20090930.asc') hazard_layer = save_to_geonode(hazard_filename) check_layer(hazard_layer, full=True) exposure_filename = os.path.join(TESTDATA, 'lembang_schools.shp') exposure_layer = save_to_geonode(exposure_filename) check_layer(exposure_layer, full=True) # Test plugin_list = get_plugins() assert len(plugin_list) > 0 geoserver = { 'url': settings.GEOSERVER_BASE_URL + 'ows', 'name': 'Local Geoserver', 'version': '1.0.0', 'id': 0 } metadata = get_layer_descriptors(geoserver['url']) msg = 'There were no layers in test geoserver' assert len(metadata) > 0, msg # Characterisation test to preserve the behaviour of # get_layer_descriptors. FIXME: I think we should change this to be # a dictionary of metadata entries (ticket #126). reference = [[ 'geonode:lembang_schools', { 'layer_type': 'vector', 'category': 'exposure', 'subcategory': 'building', 'title': 'lembang_schools' } ], [ 'geonode:shakemap_padang_20090930', { 'layer_type': 'raster', 'category': 'hazard', 'subcategory': 'earthquake', 'title': 'shakemap_padang_20090930' } ]] for entry in reference: name, mdblock = entry i = [x[0] for x in metadata].index(name) msg = 'Got name %s, expected %s' % (name, metadata[i][0]) assert name == metadata[i][0], msg for key in entry[1]: refval = entry[1][key] val = metadata[i][1][key] msg = ('Got value "%s" for key "%s" ' 'Expected "%s"' % (val, key, refval)) assert refval == val, msg # Check plugins are returned annotated_plugins = [{ 'name': name, 'doc': f.__doc__, 'layers': compatible_layers(f, metadata) } for name, f in plugin_list.items()] msg = 'No compatible layers returned' assert len(annotated_plugins) > 0, msg