def test_protected_layers3(self): from c2cgeoportal.lib.filter_capabilities import get_protected_layers pl = get_protected_layers(self.role3_id, [self.ogc_server_id]) self.assertEqual( {pl[l].name for l in pl}, {"testpoint_protected", "testpoint_protected_query_with_collect"} )
def get_report(self): id = self.request.matchdict["id"] self.layername = self.request.matchdict["layername"] if self._get_config("check_credentials", True): # check user credentials role_id = None if self.request.user is None else \ self.request.user.role.id # FIXME: support of mapserver groups if self.layername in get_private_layers() and \ self.layername not in get_protected_layers(role_id): raise HTTPForbidden show_map = self._get_config("show_map", True) if show_map: srs = self._get_config("srs") if srs is None: raise HTTPInternalServerError( "Missing 'srs' in service configuration" ) params = { "service": "WFS", "version": "1.0.0", "request": "GetFeature", "typeName": self.layername, "featureid": self.layername + "." + id, "srsName": srs } mapserv_url = self.request.route_url("mapserverproxy") vector_request_url = mapserv_url + "?" \ + "&".join(["%s=%s" % i for i in params.items()]) backgroundlayers = self._get_config("backgroundlayers", '""') imageformat = self._get_config("imageformat", "image/png") else: srs = mapserv_url = vector_request_url = imageformat = "" backgroundlayers = '""' spec_template = self._get_config("spec_template") if spec_template is None: spec_template = { "layout": "%(layername)s", "outputFormat": "pdf", "attributes": { "paramID": "%(id)s" } } if show_map: spec_template["attributes"]["map"] = { "projection": "%(srs)s", "dpi": 254, "rotation": 0, "bbox": [0, 0, 1000000, 1000000], "zoomToFeatures": { "zoomType": "center", "layer": "vector", "minScale": 25000 }, "layers": [{ "type": "gml", "name": "vector", "style": { "version": "2", "[1 > 0]": { "fillColor": "red", "fillOpacity": 0.2, "symbolizers": [{ "strokeColor": "red", "strokeWidth": 1, "type": "point", "pointRadius": 10 }] } }, "opacity": 1, "url": "%(vector_request_url)s" }, { "baseURL": "%(mapserv_url)s", "opacity": 1, "type": "WMS", "serverType": "mapserver", "layers": ["%(backgroundlayers)s"], "imageFormat": "%(imageformat)s" }] } spec = dumps(spec_template) % { "layername": self.layername, "id": id, "srs": srs, "mapserv_url": mapserv_url, "vector_request_url": vector_request_url, "imageformat": imageformat, "backgroundlayers": backgroundlayers } return self._do_print(loads(spec))
def get_report(self): id = self.request.matchdict["id"] self.layername = self.request.matchdict["layername"] self.layer_config = self.config.get("layers", {}).get(self.layername, {}) if self._get_config("check_credentials", True): # check user credentials role_id = None if self.request.user is None else self.request.user.role.id # FIXME: support of mapserver groups if self.layername in get_private_layers() and self.layername not in get_protected_layers(role_id): raise HTTPForbidden srs = self._get_config("srs") if srs is None: raise HTTPInternalServerError("Missing 'srs' in service configuration") mapserv_url = self.request.route_url("mapserverproxy") vector_request_url = "%s?%s" % ( mapserv_url, "&".join( [ "%s=%s" % i for i in { "service": "WFS", "version": "1.1.0", "outputformat": "gml3", "request": "GetFeature", "typeName": self.layername, "featureid": self.layername + "." + id, "srsName": "epsg:" + str(srs), }.items() ] ), ) spec = self._get_config("spec") if spec is None: spec = {"layout": self.layername, "outputFormat": "pdf", "attributes": {"paramID": id}} map_config = self.layer_config.get("map") if map_config is not None: spec["attributes"]["map"] = self._build_map(mapserv_url, vector_request_url, srs, map_config) maps_config = self.layer_config.get("maps") if maps_config is not None: spec["attributes"]["maps"] = [] for map_config in maps_config: spec["attributes"]["maps"].append(self._build_map(mapserv_url, vector_request_url, srs, map_config)) else: spec = loads( dumps(spec) % { "layername": self.layername, "id": id, "srs": srs, "mapserv_url": mapserv_url, "vector_request_url": vector_request_url, } ) return self._do_print(spec)
def get_report(self): ids = self.request.matchdict["ids"].split(",") self.layername = self.request.matchdict["layername"] layer_config = self.config["layers"].get(self.layername) if layer_config is None: raise HTTPBadRequest("Layer not found") features_ids = [self.layername + "." + id_ for id_ in ids] if layer_config["check_credentials"]: # check user credentials role_id = None if self.request.user is None else \ self.request.user.role.id # FIXME: support of mapserver groups ogc_server_ids = [self.default_ogc_server.id] private_layers_object = get_private_layers(ogc_server_ids) private_layers_names = [ private_layers_object[oid].name for oid in private_layers_object ] protected_layers_object = get_protected_layers( role_id, ogc_server_ids) protected_layers_names = [ protected_layers_object[oid].name for oid in protected_layers_object ] if self.layername in private_layers_names and \ self.layername not in protected_layers_names: raise HTTPForbidden srs = layer_config["srs"] mapserv_url = self.request.route_url("mapserverproxy") vector_request_url = "{0!s}?{1!s}".format( mapserv_url, "&".join([ "{0!s}={1!s}".format(*i) for i in list({ "service": "WFS", "version": "1.1.0", "outputformat": "gml3", "request": "GetFeature", "typeName": self.layername, "featureid": ",".join(features_ids), "srsName": "epsg:" + str(srs) }.items()) ])) spec = layer_config["spec"] if spec is None: spec = { "layout": self.layername, "outputFormat": "pdf", "attributes": { "ids": ids } } map_config = layer_config.get("map") if map_config is not None: spec["attributes"]["map"] = self._build_map( mapserv_url, vector_request_url, srs, map_config) maps_config = layer_config.get("maps") if maps_config is not None: spec["attributes"]["maps"] = [] for map_config in maps_config: spec["attributes"]["maps"].append( self._build_map(mapserv_url, vector_request_url, srs, map_config)) else: spec = loads( dumps(spec) % { "layername": self.layername, "ids": dumps(ids), "srs": srs, "mapserv_url": mapserv_url, "vector_request_url": vector_request_url, }) return self._do_print(spec)
def get_report(self): id = self.request.matchdict["id"] self.layername = self.request.matchdict["layername"] self.layer_config = self.config.get("layers", {}).get(self.layername, {}) if self._get_config("check_credentials", True): # check user credentials role_id = None if self.request.user is None else \ self.request.user.role.id # FIXME: support of mapserver groups if self.layername in get_private_layers() and \ self.layername not in get_protected_layers(role_id): raise HTTPForbidden srs = self._get_config("srs") if srs is None: raise HTTPInternalServerError( "Missing 'srs' in service configuration" ) mapserv_url = self.request.route_url("mapserverproxy") vector_request_url = "%s?%s" % ( mapserv_url, "&".join(["%s=%s" % i for i in { "service": "WFS", "version": "1.1.0", "outputformat": "gml3", "request": "GetFeature", "typeName": self.layername, "featureid": self.layername + "." + id, "srsName": "epsg:" + str(srs) }.items()]) ) spec = self._get_config("spec") if spec is None: spec = { "layout": self.layername, "outputFormat": "pdf", "attributes": { "paramID": id } } map_config = self.layer_config.get("map") if map_config is not None: spec["attributes"]["map"] = self._build_map( mapserv_url, vector_request_url, srs, map_config ) maps_config = self.layer_config.get("maps") if maps_config is not None: spec["attributes"]["maps"] = [] for map_config in maps_config: spec["attributes"]["maps"].append(self._build_map( mapserv_url, vector_request_url, srs, map_config )) else: spec = loads(dumps(spec) % { "layername": self.layername, "id": id, "srs": srs, "mapserv_url": mapserv_url, "vector_request_url": vector_request_url, }) return self._do_print(spec)
def get_report(self): id = self.request.matchdict["id"] self.layername = self.request.matchdict["layername"] layer_config = self.config["layers"].get(self.layername) if layer_config is None: raise HTTPBadRequest("Layer not found") if layer_config["check_credentials"]: # check user credentials role_id = None if self.request.user is None else \ self.request.user.role.id # FIXME: support of mapserver groups if self.layername in get_private_layers() and \ self.layername not in get_protected_layers(role_id): raise HTTPForbidden srs = layer_config["srs"] mapserv_url = self.request.route_url("mapserverproxy") vector_request_url = "{0!s}?{1!s}".format( mapserv_url, "&".join(["{0!s}={1!s}".format(*i) for i in { "service": "WFS", "version": "1.1.0", "outputformat": "gml3", "request": "GetFeature", "typeName": self.layername, "featureid": self.layername + "." + id, "srsName": "epsg:" + str(srs) }.items()]) ) spec = layer_config["spec"] if spec is None: spec = { "layout": self.layername, "outputFormat": "pdf", "attributes": { "paramID": id } } map_config = layer_config.get("map") if map_config is not None: spec["attributes"]["map"] = self._build_map( mapserv_url, vector_request_url, srs, map_config ) maps_config = layer_config.get("maps") if maps_config is not None: spec["attributes"]["maps"] = [] for map_config in maps_config: spec["attributes"]["maps"].append(self._build_map( mapserv_url, vector_request_url, srs, map_config )) else: spec = loads(dumps(spec) % { "layername": self.layername, "id": id, "srs": srs, "mapserv_url": mapserv_url, "vector_request_url": vector_request_url, }) return self._do_print(spec)