Exemple #1
0
    def test_sanitize_url(self):
        base_url_string = 'http://somehost.com/some/path/here'
        relative_url_string = 'http://somehost.com/some/other/path'
        result1 = sanitize_url(base_url_string)
        self.assertEqual(result1, base_url_string)

        result2 = sanitize_url(relative_url_string)
        self.assertEqual(result2, relative_url_string)

        self.assertNotEqual(result1, urljoin(base_url_string, relative_url_string))

        self.assertEqual(result2, urljoin(base_url_string, relative_url_string))
Exemple #2
0
    def wmtscapabilities(self):
        from pyramid.renderers import render_to_response
        scheme = self.request.headers.get(
            'X-Forwarded-Proto',
            self.request.scheme)
        staging = self.request.registry.settings['geodata_staging']
        host = self.request.headers.get(
            'X-Forwarded-Host', self.request.host)
        mapproxyHost = self.request.registry.settings['mapproxyhost']
        apache_base_path = self.request.registry.settings['apache_base_path']
        apache_entry_point = '/' if (apache_base_path == 'main' or 'localhost' in host) else '/' + apache_base_path

        # Default ressource
        s3_url = sanitize_url("%s://wmts.geo.admin.ch/" % scheme)
        mapproxy_url = sanitize_url("%s://%s%s/" % (scheme, mapproxyHost, apache_entry_point))
        onlineressources = {'mapproxy': mapproxy_url, 's3': s3_url}

        layers_query = self.request.db.query(self.models['GetCap'])
        layers_query = filter_by_geodata_staging(
            layers_query,
            self.models['GetCap'].staging,
            staging
        )
        if self.mapName != 'all':
            layers_query = filter_by_map_name(layers_query, self.models['GetCap'], self.mapName)
        layers = layers_query.all()
        if hasattr(self.models['GetCapThemes'], 'oberthema_id'):
            themes = self.request.db.query(self.models['GetCapThemes']).order_by(self.models['GetCapThemes'].oberthema_id).all()
        else:
            themes = self.request.db.query(self.models['GetCapThemes']).all()

        metadata = self.request.db.query(self.models['ServiceMetadata'])\
            .filter(self.models['ServiceMetadata']
                    .pk_map_name.like('%wmts-bgdi%')).first()

        wmts = {
            'layers': layers,
            'themes': themes,
            'metadata': metadata,
            'scheme': scheme,
            'onlineressources': onlineressources,
            'tilematrixset': self.tileMatrixSet,
            'tilematrixsetDefs': DEFAULT_TILEMATRIXSET
        }
        response = render_to_response(
            'chsdi:templates/wmtscapabilities.mako',
            wmts,
            request=self.request)
        response.content_type = 'text/xml'
        return response
Exemple #3
0
    def test_sanitize_url(self):
        base_url_string = 'http://somehost.com/some/path/here'
        relative_url_string = 'http://somehost.com/some/other/path'
        result1 = sanitize_url(base_url_string)
        self.assertEqual(result1, base_url_string)

        result2 = sanitize_url(relative_url_string)
        self.assertEqual(result2, relative_url_string)

        self.assertNotEqual(result1,
                            urljoin(base_url_string, relative_url_string))

        self.assertEqual(result2, urljoin(base_url_string,
                                          relative_url_string))
    def wmtscapabilities(self):
        from pyramid.renderers import render_to_response
        scheme = self.request.headers.get('X-Forwarded-Proto',
                                          self.request.scheme)
        staging = self.request.registry.settings['geodata_staging']
        mapproxyHost = self.request.registry.settings['mapproxyhost']

        # Default ressource
        s3_url = sanitize_url("%s://wmts.geo.admin.ch/" % scheme)
        mapproxy_url = sanitize_url("%s://%s/" % (scheme, mapproxyHost))
        onlineressources = {'mapproxy': mapproxy_url, 's3': s3_url}

        layers_query = self.request.db.query(self.models['GetCap'])
        layers_query = filter_by_geodata_staging(layers_query,
                                                 self.models['GetCap'].staging,
                                                 staging)
        if self.mapName != 'all':
            layers_query = filter_by_map_name(layers_query,
                                              self.models['GetCap'],
                                              self.mapName)
        layers = layers_query.all()
        if hasattr(self.models['GetCapThemes'], 'oberthema_id'):
            themes = self.request.db.query(
                self.models['GetCapThemes']).order_by(
                    self.models['GetCapThemes'].oberthema_id).all()
        else:
            themes = self.request.db.query(self.models['GetCapThemes']).all()

        metadata = self.request.db.query(self.models['ServiceMetadata'])\
            .filter(self.models['ServiceMetadata']
                    .pk_map_name.like('%wmts-bgdi%')).first()

        wmts = {
            'layers': layers,
            'themes': themes,
            'metadata': metadata,
            'scheme': scheme,
            'onlineressources': onlineressources,
            'tilematrixset': self.tileMatrixSet,
            'tilematrixsetDefs': DEFAULT_TILEMATRIXSET
        }
        response = render_to_response(
            'chsdi:templates/wmtscapabilities/wmtscapabilities.mako',
            wmts,
            request=self.request)
        response.content_type = 'text/xml'
        return response
Exemple #5
0
    def wmtscapabilities(self):
        from pyramid.renderers import render_to_response
        scheme = self.request.headers.get('X-Forwarded-Proto',
                                          self.request.scheme)
        staging = self.request.registry.settings['geodata_staging']
        wmts_public_host = self.request.registry.settings['wmts_public_host']

        # Default ressource
        onlineressource = sanitize_url("%s://%s/" % (scheme, wmts_public_host))

        layers_query = self.request.db.query(self.models['GetCap'])
        layers_query = filter_by_geodata_staging(layers_query,
                                                 self.models['GetCap'].staging,
                                                 staging)
        if self.mapName != 'all':
            layers_query = filter_by_map_name(layers_query,
                                              self.models['GetCap'],
                                              self.mapName)
        layers = layers_query.all()
        zoom_levels = getLayersZoomLevelSet(self.tileMatrixSet, layers)
        if hasattr(self.models['GetCapThemes'], 'oberthema_id'):
            themes = self.request.db.query(
                self.models['GetCapThemes']).order_by(
                    self.models['GetCapThemes'].oberthema_id).all()
        else:
            themes = self.request.db.query(self.models['GetCapThemes']).all()

        metadata = self.request.db.query(self.models['ServiceMetadata'])\
            .filter(self.models['ServiceMetadata']
                    .pk_map_name.like(u'%wmts-bgdi%')).first()

        wmts = {
            'layers': layers,
            'zoomlevels': zoom_levels,
            'themes': themes,
            'metadata': metadata,
            'scheme': scheme,
            'onlineressource': onlineressource,
            'tilematrixset': self.tileMatrixSet,
            'tilematrixsetDefs': getDefaultTileMatrixSet(self.tileMatrixSet)
        }
        response = render_to_response(
            'chsdi:templates/wmtscapabilities/wmtscapabilities.mako',
            wmts,
            request=self.request)
        response.content_type = 'text/xml'
        return response
    def wmtscapabilities(self):
        from pyramid.renderers import render_to_response
        scheme = self.request.headers.get(
            'X-Forwarded-Proto',
            self.request.scheme)
        staging = self.request.registry.settings['geodata_staging']
        wmts_public_host = self.request.registry.settings['wmts_public_host']

        # Default ressource
        onlineressource = sanitize_url("%s://%s/" % (scheme, wmts_public_host))

        layers_query = self.request.db.query(self.models['GetCap'])
        layers_query = filter_by_geodata_staging(
            layers_query,
            self.models['GetCap'].staging,
            staging
        )
        if self.mapName != 'all':
            layers_query = filter_by_map_name(layers_query, self.models['GetCap'], self.mapName)
        layers = layers_query.all()
        zoom_levels = getLayersZoomLevelSet(self.tileMatrixSet, layers)
        if hasattr(self.models['GetCapThemes'], 'oberthema_id'):
            themes = self.request.db.query(self.models['GetCapThemes']).order_by(self.models['GetCapThemes'].oberthema_id).all()
        else:
            themes = self.request.db.query(self.models['GetCapThemes']).all()

        metadata = self.request.db.query(self.models['ServiceMetadata'])\
            .filter(self.models['ServiceMetadata']
                    .pk_map_name.like(u'%wmts-bgdi%')).first()

        wmts = {
            'layers': layers,
            'zoomlevels': zoom_levels,
            'themes': themes,
            'metadata': metadata,
            'scheme': scheme,
            'onlineressource': onlineressource,
            'tilematrixset': self.tileMatrixSet,
            'tilematrixsetDefs': getDefaultTileMatrixSet(self.tileMatrixSet)
        }
        response = render_to_response(
            'chsdi:templates/wmtscapabilities/wmtscapabilities.mako',
            wmts,
            request=self.request)
        response.content_type = 'text/xml'
        return response
Exemple #7
0
 def test_sanitize_url_throws_ValueError(self):
     # ValueError
     url2 = None
     result2 = sanitize_url(url2)
     self.assertRaises(ValueError, result2)
Exemple #8
0
 def test_sanitize_url_throws_ValueError(self):
     # ValueError
     url2 = None
     res2 = sanitize_url(url2)
     self.assertEqual(url2, res2)
Exemple #9
0
 def test_sanitize_url_throws_ValueError(self):
     # ValueError
     url2 = None
     res2 = sanitize_url(url2)
     self.assertEqual(url2, res2)
Exemple #10
0
 def test_sanitize_url_throws_ValueError(self):
     # ValueError
     url2 = None
     result2 = sanitize_url(url2)
     self.assertRaises(ValueError, result2)