Example #1
0
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)
Example #2
0
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)
Example #3
0
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}
Example #4
0
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
    }
Example #5
0
    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()