Ejemplo n.º 1
0
def create_default_ogcserver():
    from c2cgeoportal.models import DBSession, OGCServer
    DBSession.query(OGCServer).delete()
    ogcserver = OGCServer(name="__test_ogc_server")
    ogcserver.url = mapserv
    ogcserver_external = OGCServer(name="__test_external_ogc_server")
    ogcserver_external.url = mapserv + "external=true&"
    DBSession.add_all([ogcserver, ogcserver_external])
    return ogcserver, ogcserver_external
Ejemplo n.º 2
0
def create_default_ogcserver():
    from c2cgeoportal.models import DBSession, OGCServer
    DBSession.query(OGCServer).delete()
    ogcserver = OGCServer(name="__test_ogc_server")
    ogcserver.url = mapserv
    ogcserver_external = OGCServer(name="__test_external_ogc_server")
    ogcserver_external.url = mapserv + "external=true&"
    DBSession.add_all([ogcserver, ogcserver_external])
    return ogcserver, ogcserver_external
Ejemplo n.º 3
0
def ogc_server(session):
    from c2cgeoportal.models import LayerV1, OGCServer

    servers_v1 = session.query(
        LayerV1.url, LayerV1.image_type, LayerV1.is_single_tile
    ).group_by(
        LayerV1.url, LayerV1.image_type, LayerV1.is_single_tile
    ).all()

    # get existing list of ogc_server
    servers_ogc = session.query(OGCServer).all()
    unique_servers = set([
        (
            server.url,
            server.image_type,
            True if server.is_single_tile is None else server.is_single_tile
        )
        for server in servers_ogc
    ])

    # add new ogc_server
    for url, image_type, is_single_tile in servers_v1:
        # default image_type
        if image_type is None:
            image_type = "image/png"
        if is_single_tile is None:
            is_single_tile = False
        if url is None:
            url = "config://internal/mapserv"
            name = u"source for {}".format(image_type)
        else:
            name = u"source for {} {}".format(url, image_type)
        if is_single_tile:
            name += u" with single_tile"
        identifier = (url, image_type, is_single_tile)
        if identifier not in unique_servers:
            unique_servers.add(identifier)
            new_ogc_server = OGCServer()
            new_ogc_server.url = url
            new_ogc_server.image_type = image_type
            new_ogc_server.is_single_tile = is_single_tile
            new_ogc_server.name = name

            session.add(new_ogc_server)

    transaction.commit()
Ejemplo n.º 4
0
def ogc_server(session):
    from c2cgeoportal.models import LayerV1, OGCServer

    servers_v1 = session.query(
        LayerV1.url, LayerV1.image_type, LayerV1.is_single_tile).group_by(
            LayerV1.url, LayerV1.image_type, LayerV1.is_single_tile).all()
    unique_servers = []

    # get existing list of ogc_server
    servers_ogc = session.query(OGCServer).all()
    for server in servers_ogc:
        identifier = str(server.url) + ' ' + str(server.image_type) + ' ' + \
            str(server.is_single_tile)
        if identifier not in unique_servers:
            unique_servers.append(identifier)

    # add new ogc_server
    for server in servers_v1:
        # default image_type
        image_type = server[1]
        if server[1] is None:
            image_type = 'image/png'
        identifier = str(server[0]) + ' ' + image_type + ' ' + str(server[2])
        if identifier not in unique_servers:
            unique_servers.append(identifier)
            new_ogc_server = OGCServer()
            new_ogc_server.url = server[0]
            new_ogc_server.image_type = image_type
            new_ogc_server.is_single_tile = server[2]
            name = server[0]
            if name is None:
                name = str(server[1])
            if server[2]:
                name += ' with single_tile'
            new_ogc_server.name = u'source for %s' % name

            session.add(new_ogc_server)

    transaction.commit()
Ejemplo n.º 5
0
    def setUp(self):  # noqa
        self.maxDiff = None

        from c2cgeoportal.models import User, Role, LayerV1, RestrictionArea, \
            Functionality, Interface, DBSession, management, OGCServer, \
            OGCSERVER_TYPE_GEOSERVER, OGCSERVER_AUTH_GEOSERVER

        if management:
            TestPoint.__table__.c.the_geom.type.management = True

        create_default_ogcserver()
        ogcserver_geoserver = OGCServer(name="__test_ogc_server_geoserver")
        ogcserver_geoserver.url = mapserv_url
        ogcserver_geoserver.type = OGCSERVER_TYPE_GEOSERVER
        ogcserver_geoserver.auth = OGCSERVER_AUTH_GEOSERVER

        TestPoint.__table__.create(bind=DBSession.bind, checkfirst=True)

        geom = WKTElement("MULTIPOINT((-90 -45))", srid=21781)
        p1 = TestPoint(the_geom=geom, name=u"foo", city=u"Lausanne", country=u"Swiss")
        geom = WKTElement("MULTIPOINT((-90 45))", srid=21781)
        p2 = TestPoint(the_geom=geom, name=u"bar", city=u"Chambéry", country=u"France")
        geom = WKTElement("MULTIPOINT((90 45))", srid=21781)
        p3 = TestPoint(the_geom=geom, name=u"éàè", city="Paris", country=u"France")
        geom = WKTElement("MULTIPOINT((90 -45))", srid=21781)
        p4 = TestPoint(the_geom=geom, name=u"123", city="Londre", country=u"UK")

        pt1 = Functionality(name=u"print_template", value=u"1 Wohlen A4 portrait")
        pt2 = Functionality(name=u"print_template", value=u"2 Wohlen A3 landscape")
        user1 = User(username=u"__test_user1", password=u"__test_user1")
        role1 = Role(name=u"__test_role1", description=u"__test_role1", functionalities=[pt1, pt2])
        user1.role_name = role1.name
        user1.email = u"Tarenpion"

        user2 = User(username=u"__test_user2", password=u"__test_user2")
        role2 = Role(name=u"__test_role2", description=u"__test_role2", functionalities=[pt1, pt2])
        user2.role_name = role2.name
        user2.email = u"Tarenpion"

        user3 = User(username=u"__test_user3", password=u"__test_user3")
        role3 = Role(name=u"__test_role3", description=u"__test_role3", functionalities=[pt1, pt2])
        user3.role_name = role3.name
        user3.email = u"Tarenpion"

        main = Interface(name=u"main")

        layer2 = LayerV1(u"testpoint_protected", public=False)
        layer2.interfaces = [main]
        layer3 = LayerV1(u"testpoint_protected_query_with_collect", public=False)
        layer3.interfaces = [main]

        area = "POLYGON((-100 30, -100 50, 100 50, 100 30, -100 30))"
        area = WKTElement(area, srid=21781)
        restricted_area1 = RestrictionArea(u"__test_ra1", u"", [layer2, layer3], [role1], area)

        area = "POLYGON((-100 0, -100 20, 100 20, 100 0, -100 0))"
        area = WKTElement(area, srid=21781)
        restricted_area2 = RestrictionArea(u"__test_ra2", u"", [layer2, layer3], [role2, role3], area)

        area = "POLYGON((-95 43, -95 47, 95 47, 95 43, -95 43))"
        area = WKTElement(area, srid=21781)
        restricted_area3 = RestrictionArea(u"__test_ra3", u"", [layer3], [role3], area, readwrite=True)

        DBSession.add_all([
            p1, p2, p3, p4, user1, user2, user3, role1, role2, role3,
            restricted_area1, restricted_area2, restricted_area3, ogcserver_geoserver
        ])
        DBSession.flush()

        self.id_lausanne = p1.id
        self.id_paris = p3.id

        transaction.commit()
Ejemplo n.º 6
0
    def setUp(self):  # noqa
        self.maxDiff = None

        from c2cgeoportal.models import User, Role, LayerV1, RestrictionArea, \
            Functionality, Interface, DBSession, management, OGCServer, \
            OGCSERVER_TYPE_GEOSERVER, OGCSERVER_AUTH_GEOSERVER

        if management:
            TestPoint.__table__.c.the_geom.type.management = True

        create_default_ogcserver()
        ogcserver_geoserver = OGCServer(name="__test_ogc_server_geoserver")
        ogcserver_geoserver.url = mapserv
        ogcserver_geoserver.type = OGCSERVER_TYPE_GEOSERVER
        ogcserver_geoserver.auth = OGCSERVER_AUTH_GEOSERVER

        TestPoint.__table__.create(bind=DBSession.bind, checkfirst=True)

        geom = WKTElement("MULTIPOINT((-90 -45))", srid=21781)
        p1 = TestPoint(the_geom=geom,
                       name=u"foo",
                       city=u"Lausanne",
                       country=u"Swiss")
        geom = WKTElement("MULTIPOINT((-90 45))", srid=21781)
        p2 = TestPoint(the_geom=geom,
                       name=u"bar",
                       city=u"Chambéry",
                       country=u"France")
        geom = WKTElement("MULTIPOINT((90 45))", srid=21781)
        p3 = TestPoint(the_geom=geom,
                       name=u"éàè",
                       city="Paris",
                       country=u"France")
        geom = WKTElement("MULTIPOINT((90 -45))", srid=21781)
        p4 = TestPoint(the_geom=geom,
                       name=u"123",
                       city="Londre",
                       country=u"UK")

        pt1 = Functionality(name=u"print_template",
                            value=u"1 Wohlen A4 portrait")
        pt2 = Functionality(name=u"print_template",
                            value=u"2 Wohlen A3 landscape")
        user1 = User(username=u"__test_user1", password=u"__test_user1")
        role1 = Role(name=u"__test_role1",
                     description=u"__test_role1",
                     functionalities=[pt1, pt2])
        user1.role_name = role1.name
        user1.email = u"Tarenpion"

        user2 = User(username=u"__test_user2", password=u"__test_user2")
        role2 = Role(name=u"__test_role2",
                     description=u"__test_role2",
                     functionalities=[pt1, pt2])
        user2.role_name = role2.name
        user2.email = u"Tarenpion"

        user3 = User(username=u"__test_user3", password=u"__test_user3")
        role3 = Role(name=u"__test_role3",
                     description=u"__test_role3",
                     functionalities=[pt1, pt2])
        user3.role_name = role3.name
        user3.email = u"Tarenpion"

        main = Interface(name=u"main")

        layer2 = LayerV1(u"testpoint_protected", public=False)
        layer2.interfaces = [main]
        layer3 = LayerV1(u"testpoint_protected_query_with_collect",
                         public=False)
        layer3.interfaces = [main]

        area = "POLYGON((-100 30, -100 50, 100 50, 100 30, -100 30))"
        area = WKTElement(area, srid=21781)
        restricted_area1 = RestrictionArea(u"__test_ra1", u"",
                                           [layer2, layer3], [role1], area)

        area = "POLYGON((-100 0, -100 20, 100 20, 100 0, -100 0))"
        area = WKTElement(area, srid=21781)
        restricted_area2 = RestrictionArea(u"__test_ra2", u"",
                                           [layer2, layer3], [role2, role3],
                                           area)

        area = "POLYGON((-95 43, -95 47, 95 47, 95 43, -95 43))"
        area = WKTElement(area, srid=21781)
        restricted_area3 = RestrictionArea(u"__test_ra3",
                                           u"", [layer3], [role3],
                                           area,
                                           readwrite=True)

        DBSession.add_all([
            p1, p2, p3, p4, user1, user2, user3, role1, role2, role3,
            restricted_area1, restricted_area2, restricted_area3,
            ogcserver_geoserver
        ])
        DBSession.flush()

        self.id_lausanne = p1.id
        self.id_paris = p3.id

        transaction.commit()
Ejemplo n.º 7
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.models import User, Role, LayerWMS, RestrictionArea, \
            Functionality, Interface, DBSession, OGCServer, \
            OGCSERVER_TYPE_GEOSERVER, OGCSERVER_AUTH_GEOSERVER

        cleanup_db()

        ogc_server_internal, _ = create_default_ogcserver()
        ogcserver_geoserver = OGCServer(name="__test_ogc_server_geoserver")
        ogcserver_geoserver.url = mapserv_url
        ogcserver_geoserver.type = OGCSERVER_TYPE_GEOSERVER
        ogcserver_geoserver.auth = OGCSERVER_AUTH_GEOSERVER

        PointTest.__table__.create(bind=DBSession.bind, checkfirst=True)

        geom = WKTElement("POINT(599910 199955)", srid=21781)
        p1 = PointTest(geom=geom, name="foo", city="Lausanne", country="Swiss")
        geom = WKTElement("POINT(599910 200045)", srid=21781)
        p2 = PointTest(geom=geom, name="bar", city="Chambéry", country="France")
        geom = WKTElement("POINT(600090 200045)", srid=21781)
        p3 = PointTest(geom=geom, name="éàè", city="Paris", country="France")
        geom = WKTElement("POINT(600090 199955)", srid=21781)
        p4 = PointTest(geom=geom, name="123", city="Londre", country="UK")

        pt1 = Functionality(name="print_template", value="1 Wohlen A4 portrait")
        pt2 = Functionality(name="print_template", value="2 Wohlen A3 landscape")
        user1 = User(username="******", password="******")
        role1 = Role(name="__test_role1", description="__test_role1", functionalities=[pt1, pt2])
        user1.role_name = role1.name
        user1.email = "Tarenpion"

        user2 = User(username="******", password="******")
        role2 = Role(name="__test_role2", description="__test_role2", functionalities=[pt1, pt2])
        user2.role_name = role2.name
        user2.email = "Tarenpion"

        user3 = User(username="******", password="******")
        role3 = Role(name="__test_role3", description="__test_role3", functionalities=[pt1, pt2])
        user3.role_name = role3.name

        main = Interface(name="main")

        layer2 = LayerWMS("testpoint_protected", public=False)
        layer2.layer = "testpoint_protected"
        layer2.ogc_server = ogc_server_internal
        layer2.interfaces = [main]

        layer3 = LayerWMS("testpoint_protected_query_with_collect", public=False)
        layer3.layer = "testpoint_protected_query_with_collect"
        layer3.ogc_server = ogc_server_internal
        layer3.interfaces = [main]

        area = "POLYGON((599900 200030, 599900 200050, 600100 200050, 600100 200030, 599900 200030))"
        area = WKTElement(area, srid=21781)
        restricted_area1 = RestrictionArea("__test_ra1", "", [layer2, layer3], [role1], area)

        area = "POLYGON((599900 200000, 599900 200020, 600100 200020, 600100 200000, 599900 200000))"
        area = WKTElement(area, srid=21781)
        restricted_area2 = RestrictionArea("__test_ra2", "", [layer2, layer3], [role2, role3], area)

        area = "POLYGON((599905 200043, 599905 200047, 600095 200047, 600095 200043, 599905 200043))"
        area = WKTElement(area, srid=21781)
        restricted_area3 = RestrictionArea("__test_ra3", "", [layer3], [role3], area, readwrite=True)

        DBSession.add_all([
            p1, p2, p3, p4, user1, user2, user3, role1, role2, role3,
            restricted_area1, restricted_area2, restricted_area3, ogcserver_geoserver
        ])
        DBSession.flush()

        self.id_lausanne = p1.id
        self.id_paris = p3.id
        self.ogc_server_id = ogc_server_internal.id
        self.role1_id = role1.id
        self.role2_id = role2.id
        self.role3_id = role3.id

        transaction.commit()
    def setup_method(self, _):
        self.maxDiff = None

        from c2cgeoportal.models import User, Role, LayerWMS, RestrictionArea, \
            Interface, DBSession, OGCServer, \
            OGCSERVER_TYPE_MAPSERVER, OGCSERVER_AUTH_STANDARD

        cleanup_db()
        create_default_ogcserver()

        ogcserver_jpeg = OGCServer(name="__test_ogc_server_jpeg")
        ogcserver_jpeg.url = mapserv_url
        ogcserver_jpeg.image_type = "image/jpeg"
        ogcserver_jpeg.type = OGCSERVER_TYPE_MAPSERVER
        ogcserver_jpeg.auth = OGCSERVER_AUTH_STANDARD

        ogcserver_png = OGCServer(name="__test_ogc_server_png")
        ogcserver_png.url = mapserv_url
        ogcserver_png.image_type = "image/png"
        ogcserver_png.type = OGCSERVER_TYPE_MAPSERVER
        ogcserver_png.auth = OGCSERVER_AUTH_STANDARD

        ogcserver_wfs1 = OGCServer(name="__test_ogc_server_wfs1")
        ogcserver_wfs1.url = mapserv_url
        ogcserver_wfs1.url_wfs = "config://srv"
        ogcserver_wfs1.image_type = "image/png"
        ogcserver_wfs1.type = OGCSERVER_TYPE_MAPSERVER
        ogcserver_wfs1.auth = OGCSERVER_AUTH_STANDARD

        ogcserver_wfs2 = OGCServer(name="__test_ogc_server_wfs2")
        ogcserver_wfs2.url = "config://srv"
        ogcserver_wfs2.url_wfs = mapserv_url
        ogcserver_wfs2.image_type = "image/png"
        ogcserver_wfs2.type = OGCSERVER_TYPE_MAPSERVER
        ogcserver_wfs2.auth = OGCSERVER_AUTH_STANDARD

        role = Role(name="__test_role", description="__test_role")
        user = User(username="******", password="******")
        user.role_name = "__test_role"

        main = Interface(name="main")

        layer1 = LayerWMS("__test_layer1", public=False)
        layer1.layer = "__test_private_layer1"
        layer1.ogc_server = ogcserver_jpeg
        layer1.interfaces = [main]

        layer2 = LayerWMS("__test_layer2", public=False)
        layer2.layer = "__test_private_layer2"
        layer2.ogc_server = ogcserver_png
        layer2.interfaces = [main]

        layer3 = LayerWMS("__test_layer3", public=False)
        layer3.layer = "__test_private_layer3"
        layer3.ogc_server = ogcserver_wfs1
        layer3.interfaces = [main]

        layer4 = LayerWMS("__test_layer4", public=False)
        layer4.layer = "__test_private_layer4"
        layer4.ogc_server = ogcserver_wfs2
        layer4.interfaces = [main]

        restricted_area = RestrictionArea("__test_ra", "",
                                          [layer1, layer2, layer3, layer4],
                                          [role])

        DBSession.add_all([user, restricted_area])
        transaction.commit()
Ejemplo n.º 9
0
def ogc_server(session, settings):
    from c2cgeoportal.models import LayerV1, OGCServer, \
        OGCSERVER_TYPE_QGISSERVER, OGCSERVER_TYPE_GEOSERVER, OGCSERVER_TYPE_OTHER, \
        OGCSERVER_AUTH_GEOSERVER, OGCSERVER_AUTH_NOAUTH

    qgis_re = []
    geoserver_re = []
    other_re = []
    for e in settings.get("themev1tov2_qgis_res", "").split(","):
        if e.strip() != "":
            qgis_re.append(re.compile(e))
    for e in settings.get("themev1tov2_geoserver_res", "").split(","):
        if e.strip() != "":
            geoserver_re.append(re.compile(e))
    for e in settings.get("themev1tov2_other_res", "").split(","):
        if e.strip() != "":
            other_re.append(re.compile(e))

    servers_v1 = session.query(
        LayerV1.url, LayerV1.image_type, LayerV1.is_single_tile
    ).group_by(
        LayerV1.url, LayerV1.image_type, LayerV1.is_single_tile
    ).filter(LayerV1.layer_type != "WMTS").all()

    # get existing list of ogc_server
    servers_ogc = session.query(OGCServer).all()
    unique_servers = {
        (
            server.url,
            server.image_type,
            True if server.is_single_tile is None else server.is_single_tile
        )
        for server in servers_ogc
    }

    # add new ogc_server
    for url, image_type, is_single_tile in servers_v1:
        # default image_type
        if image_type is None:
            image_type = "image/png"
        if is_single_tile is None:
            is_single_tile = False
        if url is None:
            url = "config://internal/mapserv"
            name = "source for {}".format(image_type)
        else:
            name = "source for {} {}".format(url, image_type)
        if is_single_tile:
            name += " with single_tile"
        identifier = (url, image_type, is_single_tile)
        if identifier not in unique_servers:
            unique_servers.add(identifier)
            new_ogc_server = OGCServer()
            new_ogc_server.url = url
            new_ogc_server.image_type = image_type
            new_ogc_server.is_single_tile = is_single_tile
            new_ogc_server.name = name

            for e in qgis_re:
                if e.search(url) is not None:
                    new_ogc_server.type = OGCSERVER_TYPE_QGISSERVER
                    break
            for e in geoserver_re:
                if e.search(url) is not None:
                    new_ogc_server.type = OGCSERVER_TYPE_GEOSERVER
                    new_ogc_server.auth = OGCSERVER_AUTH_GEOSERVER
                    break
            for e in other_re:
                if e.search(url) is not None:
                    new_ogc_server.type = OGCSERVER_TYPE_OTHER
                    new_ogc_server.auth = OGCSERVER_AUTH_NOAUTH
                    break

            session.add(new_ogc_server)

    transaction.commit()