def test_extract_layer_wmts(self, dbsession, transact): from c2cgeoportal_commons.models import main del transact ogc_server = main.OGCServer(name="mapserver", url="http://mapserver:8080") layer_wmts = main.LayerWMTS(name="layer_wmts") layer_wmts.url = "https://example.com" layer_wmts.layer = "mylayer" layer_wmts.metadatas = [ main.Metadata("ogcServer", "mapserver"), main.Metadata("queryLayers", "testpoint_protected"), ] dbsession.add_all([ogc_server, layer_wmts]) dbsession.flush() messages = self.extract() assert {m.msgid for m in messages} == { "layer_wmts", "testpoint_protected", "city", "country", "name", }
def test_search_alias(self, dbsession, settings, test_data): from c2cgeoportal_commons.models import main from c2cgeoportal_geoportal.scripts.theme2fts import Import alias_layer = main.LayerWMS(name="alias_layer") alias_layer.ogc_server = test_data["ogc_server"] alias_layer.interfaces = list(test_data["interfaces"].values()) add_parent(dbsession, alias_layer, test_data["groups"]["first_level_group"]) alias_layer.metadatas = [ main.Metadata(name="searchAlias", value="myalias,mykeyword"), main.Metadata(name="searchAlias", value="myotheralias,myotherkeyword"), ] dbsession.add(alias_layer) dbsession.flush() Import(dbsession, settings, options()) for lang in settings["available_locale_names"]: for interface in test_data["interfaces"].values(): if interface.name == "api": continue expected = [ { "label": f"alias_layer_{lang}", "role": None, "interface": interface, "lang": lang, "public": True, "ts": { "fr": "'ali':1 'fr':3 'lai':2 'myali':4 'mykeyword':5 'myotherali':6 'myotherkeyword':7", "en": "'alia':1 'en':3 'layer':2 'myalia':4 'mykeyword':5 'myotheralia':6 'myotherkeyword':7", "de": "'alias':1 'de':3 'lay':2 'myalias':4 'mykeyword':5 'myotheralias':6 'myotherkeyword':7", "it": "'alias':1 'it':3 'layer':2 'myalias':4 'mykeyword':5 'myotheralias':6 'myotherkeyword':7", }, "actions": [{ "action": "add_layer", "data": "alias_layer" }], }, ] for e in expected: self.assert_fts(dbsession, e)
def test_get_layer_wms_defaut(self, web_request, dbsession): """We should copy properties from default LayerWMS""" from c2cgeoportal_commons.models import main synchronizer = self.synchronizer(web_request) default_wms = main.LayerWMS() default_wms.description = "Default description" default_wms.metadatas = [main.Metadata(name="isExpanded", value="True")] default_wms.exclude_properties = "excluded_property" default_wms.interfaces = [main.Interface("interface")] default_wms.dimensions = [ main.Dimension(name="dim", value=None, field="dim", description="description") ] default_wms.style = "default_style" el = etree.fromstring( """ <Layer> <Name>layer1</Name> <Style> <Name>default_style</Name> <Title>default_style</Title> </Style> </Layer> """ ) with patch.object(synchronizer, "_default_wms", default_wms): layer = synchronizer.get_layer_wms(el, None) assert layer.description == "Default description" assert len(layer.metadatas) == 1 assert layer.metadatas[0].name == "isExpanded" assert layer.metadatas[0].value == "True" assert layer.exclude_properties == "excluded_property" assert len(layer.interfaces) == 1 assert layer.interfaces[0].name == "interface" assert len(layer.dimensions) == 1 assert layer.dimensions[0].name == "dim" assert layer.dimensions[0].value is None assert layer.dimensions[0].field == "dim" assert layer.dimensions[0].description == "description" assert layer.style == "default_style"
def test_data(dbsession, transact): from sqlalchemy import text from c2cgeoportal_commons.models import main dbsession.execute( text(""" INSERT INTO geodata.testpoint (name) VALUES ('testpoint_name1'); """)) theme = main.Theme(name="test_theme") theme.metadatas = [ main.Metadata( name="metadata1", value="metadata1_value", ) ] dbsession.add(theme) dbsession.flush()
def get_layer_wms(self, el: Element, parent: Optional[main.TreeGroup] = None) -> main.LayerWMS: name_el = el.find("Name") assert name_el is not None name = name_el.text layer = cast( Optional[main.LayerWMS], self._request.dbsession.query(main.LayerWMS).filter(main.LayerWMS.name == name).one_or_none(), ) if layer is None: layer = main.LayerWMS() # TreeItem layer.name = name layer.description = self._default_wms.description layer.metadatas = [main.Metadata(name=m.name, value=m.value) for m in self._default_wms.metadatas] # Layer layer.public = False layer.geo_table = None layer.exclude_properties = self._default_wms.exclude_properties layer.interfaces = list(self._default_wms.interfaces) or self._interfaces # DimensionLayer layer.dimensions = [ main.Dimension( name=d.name, value=d.value, field=d.field, description=d.description, ) for d in self._default_wms.dimensions ] # LayerWMS layer.ogc_server = self._ogc_server layer.layer = name layer.style = ( self._default_wms.style if el.find(f"./Style/Name[.='{self._default_wms.style}']") is not None else None ) # layer.time_mode = # layer.time_widget = self._request.dbsession.add(layer) if not isinstance(parent, main.LayerGroup): self._logger.info("Layer %s added as new layer with no parent", name) else: layer.parents_relation.append(main.LayergroupTreeitem(group=parent)) self._logger.info("Layer %s added as new layer in group %s", name, parent.name) self._layers_added += 1 else: self._items_found += 1 if layer.ogc_server is not self._ogc_server: self._logger.info( "Layer %s: another layer already exists with the same name in OGC server %s", name, self._ogc_server.name, ) parents = [parent] if isinstance(parent, main.LayerGroup) else [] if self._force_parents and layer.parents != parents: layer.parents_relation = [main.LayergroupTreeitem(group=parent) for parent in parents] self._logger.info("Layer %s moved to %s", name, parent.name if parent else "root") return layer