def test_writable_layers3(self):
        from c2cgeoportal_geoportal.lib.layers import get_writable_layers

        pl = get_writable_layers(self.role3_id, [self.ogc_server_id])
        self.assertEqual({pl[l].name
                          for l in pl},
                         {"testpoint_protected_query_with_collect"})
    def test_writable_layers2(self):
        from c2cgeoportal_commons.models import DBSession, static
        from c2cgeoportal_geoportal.lib.layers import get_writable_layers

        pl = get_writable_layers(
            DBSession.query(static.User).get(self.user2_id),
            [self.ogc_server_id])
        self.assertEqual({pl[l].name for l in pl}, set())
    def test_writable_layers3(self):
        from c2cgeoportal_geoportal.lib.layers import get_writable_layers

        pl = get_writable_layers(self._create_dummy_request("__test_user3"),
                                 [self.ogc_server_id])
        self.assertEqual({pl[l].name
                          for l in pl},
                         {"testpoint_protected_query_with_collect"})
Exemple #4
0
 def _is_allowed(self, typenames: Set[str]) -> bool:
     """Check if the current user has the rights to access the given type-names."""
     writable_layers = set()
     for gmflayer in list(
             get_writable_layers(self.request,
                                 [self.ogc_server.id]).values()):
         for ogclayer in gmflayer.layer.split(","):
             writable_layers.add(ogclayer.lower())
     return typenames.issubset(writable_layers)
    def test_writable_layers3(self):
        from c2cgeoportal_commons.models import DBSession, static
        from c2cgeoportal_geoportal.lib.layers import get_writable_layers

        pl = get_writable_layers(
            DBSession.query(static.User).get(self.user3_id),
            [self.ogc_server_id])
        self.assertEqual({pl[l].name
                          for l in pl},
                         {"testpoint_protected_query_with_collect"})
Exemple #6
0
    def _is_allowed(self, typenames):
        """
        Checks if the current user has the rights to access the given
        type-names.
        """

        writable_layers = set()
        for gmflayer in list(
                get_writable_layers(self.role_id,
                                    [self.default_ogc_server.id]).values()):
            for ogclayer in gmflayer.layer.split(","):
                writable_layers.add(ogclayer)
        return typenames.issubset(writable_layers)
Exemple #7
0
def filter_wfst_capabilities(content: str, wfs_url: Url, request: pyramid.request.Request) -> str:
    writable_layers: Set[str] = set()
    ogc_server_ids = get_ogc_server_wfs_url_ids(request).get(wfs_url)
    for gmflayer in list(get_writable_layers(request, ogc_server_ids).values()):
        writable_layers += gmflayer.layer.split(",")

    parser = defusedxml.expatreader.create_parser(forbid_external=False)
    # skip inclusion of DTDs
    parser.setFeature(xml.sax.handler.feature_external_ges, False)
    parser.setFeature(xml.sax.handler.feature_external_pes, False)

    result = StringIO()
    downstream_handler = XMLGenerator(result, "utf-8")
    filter_handler = _CapabilitiesFilter(
        parser, downstream_handler, "FeatureType", layers_whitelist=writable_layers
    )
    filter_handler.parse(StringIO(content))
    return result.getvalue()
    def test_writable_layers2(self):
        from c2cgeoportal_geoportal.lib.layers import get_writable_layers

        pl = get_writable_layers(self._create_dummy_request("__test_user2"),
                                 [self.ogc_server_id])
        self.assertEqual({pl[l].name for l in pl}, set())
    def test_writable_layers2(self):
        from c2cgeoportal_geoportal.lib.layers import get_writable_layers

        pl = get_writable_layers(self.role2_id, [self.ogc_server_id])
        self.assertEqual({pl[l].name for l in pl}, set())