def layer_v1tov2(session, layer): from c2cgeoportal_commons.models.main import OGCServer, LayerWMS, LayerWMTS, \ LayergroupTreeitem, Dimension if layer.layer_type in ["internal WMS", "external WMS"]: # use the first one new_layer = LayerWMS() is_single_tile = layer.is_single_tile if is_single_tile is None: is_single_tile = False image_type = "image/png" if layer.layer_type == "internal WMS": url = "config://internal/mapserv" else: if layer.image_type is not None: image_type = layer.image_type url = layer.url ogc_server = session.query(OGCServer).filter( OGCServer.url == url, OGCServer.image_type == image_type, OGCServer.is_single_tile == is_single_tile ).one() new_layer.ogc_server = ogc_server new_layer.layer = layer.layer new_layer.style = layer.style new_layer.time_mode = layer.time_mode new_layer.time_widget = layer.time_widget elif layer.layer_type == "WMTS": new_layer = LayerWMTS() new_layer.url = layer.url new_layer.layer = layer.layer new_layer.style = layer.style new_layer.matrix_set = layer.matrix_set new_layer.image_type = layer.image_type or "image/png" if layer.dimensions is not None: dimensions = loads(layer.dimensions) for name, value in list(dimensions.items()): session.add(Dimension(name, value, new_layer)) new_layer.name = layer.name new_layer.public = layer.public new_layer.geo_table = layer.geo_table new_layer.interfaces = layer.interfaces new_layer.restrictionareas = layer.restrictionareas for link in layer.parents_relation: new_link = LayergroupTreeitem() new_link.ordering = link.ordering new_link.description = link.description new_link.treegroup = link.treegroup new_link.treeitem = new_layer layer_add_metadata(layer, new_layer, session) session.add(new_layer)
def layer_v1tov2(session, layer): from c2cgeoportal_commons.models.main import OGCServer, LayerWMS, LayerWMTS, \ LayergroupTreeitem, Dimension if layer.layer_type in ["internal WMS", "external WMS"]: # use the first one new_layer = LayerWMS() is_single_tile = layer.is_single_tile if is_single_tile is None: is_single_tile = False image_type = "image/png" if layer.layer_type == "internal WMS": url = "config://internal/mapserv" else: if layer.image_type is not None: image_type = layer.image_type url = layer.url ogc_server = session.query(OGCServer).filter( OGCServer.url == url, OGCServer.image_type == image_type, OGCServer.is_single_tile == is_single_tile).one() new_layer.ogc_server = ogc_server new_layer.layer = layer.layer new_layer.style = layer.style new_layer.time_mode = layer.time_mode new_layer.time_widget = layer.time_widget elif layer.layer_type == "WMTS": new_layer = LayerWMTS() new_layer.url = layer.url new_layer.layer = layer.layer new_layer.style = layer.style new_layer.matrix_set = layer.matrix_set new_layer.image_type = layer.image_type or "image/png" if layer.dimensions is not None: dimensions = loads(layer.dimensions) for name, value in list(dimensions.items()): session.add(Dimension(name, value, new_layer)) new_layer.name = layer.name new_layer.public = layer.public new_layer.geo_table = layer.geo_table new_layer.interfaces = layer.interfaces new_layer.restrictionareas = layer.restrictionareas for link in layer.parents_relation: new_link = LayergroupTreeitem() new_link.ordering = link.ordering new_link.description = link.description new_link.treegroup = link.treegroup new_link.treeitem = new_layer layer_add_metadata(layer, new_layer, session) session.add(new_layer)
def get_test_default_layers(dbsession, default_ogc_server): from c2cgeoportal_commons.models.main import LayerWMTS, LayerWMS default_wms = LayerWMS('wms-defaults') default_wms.ogc_server = default_ogc_server default_wms.time_widget = 'datepicker' default_wms.time_mode = 'value' dbsession.add(default_wms) default_wmts = LayerWMTS('wmts-defaults') default_wmts.url = 'https:///wmts.geo.admin_default.ch.org?service=wms&request=GetCapabilities' default_wmts.layer = 'default' default_wmts.matrix_set = 'matrix' dbsession.add(default_wmts) dbsession.flush() return {'wms': default_wms, 'wmts': default_wmts}
def get_test_default_layers(dbsession, default_ogc_server): from c2cgeoportal_commons.models.main import LayerVectorTiles, LayerWMS, LayerWMTS default_wms = LayerWMS("wms-defaults") default_wms.ogc_server = default_ogc_server default_wms.time_widget = "datepicker" default_wms.time_mode = "value" dbsession.add(default_wms) default_wmts = LayerWMTS("wmts-defaults") default_wmts.url = "https:///wmts.geo.admin_default.ch.org?service=wms&request=GetCapabilities" default_wmts.layer = "default" default_wmts.matrix_set = "matrix" dbsession.add(default_wmts) default_vectortiles = LayerVectorTiles("vectortiles-defaults") default_vectortiles.style = "https://vectortiles-staging.geoportail.lu/styles/roadmap/style.json" dbsession.add(default_vectortiles) dbsession.flush() return { "wms": default_wms, "wmts": default_wmts, "vectortiles": default_vectortiles }
def setup_method(self, _): # Always see the diff # https://docs.python.org/2/library/unittest.html#unittest.TestCase.maxDiff self.maxDiff = None from c2cgeoportal_commons.models import DBSession from c2cgeoportal_commons.models.main import Theme, LayerGroup, Interface, LayerWMS, LayerWMTS PointTest.__table__.create(bind=DBSession.bind, checkfirst=True) main = Interface(name="desktop") ogc_server = create_default_ogcserver() layer_wms_1 = LayerWMS(name="__test_layer_time_1", public=True) layer_wms_1.layer = "test_wmstime" layer_wms_1.time_mode = "value" layer_wms_1.interfaces = [main] layer_wms_1.ogc_server = ogc_server layer_wms_2 = LayerWMS(name="__test_layer_time_2", public=True) layer_wms_2.layer = "test_wmstime2" layer_wms_2.time_mode = "value" layer_wms_2.interfaces = [main] layer_wms_2.ogc_server = ogc_server layer_wmts = LayerWMTS(name="__test_layer_wmts", public=True) layer_wmts.url = "http://example.com/1.0.0/WMTSCapabilities.xml" layer_wmts.layer = "map" layer_wmts.interfaces = [main] layer_wms_group = LayerWMS(name="__test_layer_time_group", public=True) layer_wms_group.layer = "test_wmstimegroup" layer_wms_group.time_mode = "range" layer_wms_group.time_widget = "datepicker" layer_wms_group.interfaces = [main] layer_wms_group.ogc_server = ogc_server layer_group_1 = LayerGroup(name="__test_layer_group_1") layer_group_1.children = [layer_wms_1, layer_wms_2] layer_group_2 = LayerGroup(name="__test_layer_group_2") layer_group_2.children = [layer_wms_1] layer_group_3 = LayerGroup(name="__test_layer_group_3") layer_group_3.children = [layer_wms_1, layer_wms_2, layer_wms_group] layer_group_4 = LayerGroup(name="__test_layer_group_4") layer_group_4.children = [layer_wms_group] layer_group_5 = LayerGroup(name="__test_layer_group_5") layer_group_5.children = [layer_wms_1, layer_wms_2] layer_group_6 = LayerGroup(name="__test_layer_group_6") layer_group_6.children = [layer_wms_1, layer_wms_2, layer_wmts] layer_group_7 = LayerGroup(name="__test_layer_group_7") layer_group_7.children = [layer_wms_1] theme = Theme(name="__test_theme") theme.interfaces = [main] theme.children = [ layer_group_1, layer_group_2, layer_group_3, layer_group_4, layer_group_5, layer_group_6, layer_group_7, ] DBSession.add_all([theme]) transaction.commit()
def setup_method(self, _): # Always see the diff # https://docs.python.org/2/library/unittest.html#unittest.TestCase.maxDiff self.maxDiff = None from c2cgeoportal_commons.models import DBSession from c2cgeoportal_commons.models.main import Interface, LayerGroup, LayerWMS, LayerWMTS, Theme DBSession.query(PointTest).delete() main = Interface(name="desktop") ogc_server = create_default_ogcserver() layer_wms_1 = LayerWMS(name="__test_layer_time_1", public=True) layer_wms_1.layer = "test_wmstime" layer_wms_1.time_mode = "value" layer_wms_1.interfaces = [main] layer_wms_1.ogc_server = ogc_server layer_wms_2 = LayerWMS(name="__test_layer_time_2", public=True) layer_wms_2.layer = "test_wmstime2" layer_wms_2.time_mode = "value" layer_wms_2.interfaces = [main] layer_wms_2.ogc_server = ogc_server layer_wmts = LayerWMTS(name="__test_layer_wmts", public=True) layer_wmts.url = "http://example.com/1.0.0/WMTSCapabilities.xml" layer_wmts.layer = "map" layer_wmts.interfaces = [main] layer_wms_group_1 = LayerWMS(name="__test_layer_time_group_1", public=True) layer_wms_group_1.layer = "test_wmstimegroup" layer_wms_group_1.time_mode = "range" layer_wms_group_1.time_widget = "datepicker" layer_wms_group_1.interfaces = [main] layer_wms_group_1.ogc_server = ogc_server layer_wms_group_2 = LayerWMS(name="__test_layer_time_group_2", public=True) layer_wms_group_2.layer = "test_wmstimegroup" layer_wms_group_2.time_mode = "value" layer_wms_group_2.interfaces = [main] layer_wms_group_2.ogc_server = ogc_server layer_wms_no_time = LayerWMS(name="__test_layer_without_time_info", public=True) layer_wms_no_time.layer = "test_wmsfeatures" layer_wms_no_time.time_mode = "value" layer_wms_no_time.interfaces = [main] layer_wms_no_time.ogc_server = ogc_server # Expect merge of times layer_group_1 = LayerGroup(name="__test_layer_group_1") layer_group_1.children = [layer_wms_1, layer_wms_2] # Expect time from layer. layer_group_2 = LayerGroup(name="__test_layer_group_2") layer_group_2.children = [layer_wms_1] # Expect merge of wms 1 and 2, layer_wms_group_1 excluded and in errors as its mode don't match. layer_group_3 = LayerGroup(name="__test_layer_group_3") layer_group_3.children = [layer_wms_1, layer_wms_2, layer_wms_group_1] # Expect time from layers in wms layer group layer_group_4 = LayerGroup(name="__test_layer_group_4") layer_group_4.children = [layer_wms_group_1] # Expect merge of wms 1 and 2 and group. layer_group_5 = LayerGroup(name="__test_layer_group_5") layer_group_5.children = [layer_wms_1, layer_wms_2, layer_wms_group_2] # Expect individual layers layer_group_6 = LayerGroup(name="__test_layer_group_6") layer_group_6.children = [layer_wms_1, layer_wms_2, layer_wmts] # Expect layer_wms_no_time excluded and in errors as it has no time info layer_group_7 = LayerGroup(name="__test_layer_group_7") layer_group_7.children = [layer_wms_1, layer_wms_no_time] theme = Theme(name="__test_theme") theme.interfaces = [main] theme.children = [ layer_group_1, layer_group_2, layer_group_3, layer_group_4, layer_group_5, layer_group_6, layer_group_7, ] DBSession.add_all([theme]) transaction.commit()