Ejemplo n.º 1
0
 def handle(self, *args, **options):
     name = options.get('name')
     username = options.get('user')
     user = get_valid_user(username)
     title = options.get('title')
     geometry_type = options.get('geometry')
     attributes = options.get('attributes')
     create_dataset(name, title, user, geometry_type, attributes)
Ejemplo n.º 2
0
    def test_default_anonymous_permissions(self):
        with override_settings(RESOURCE_PUBLISHING=False,
                               ADMIN_MODERATE_UPLOADS=False,
                               DEFAULT_ANONYMOUS_VIEW_PERMISSION=True,
                               DEFAULT_ANONYMOUS_DOWNLOAD_PERMISSION=False):
            self.client.login(username='******', password='******')
            norman = get_user_model().objects.get(username="******")

            saved_dataset = create_dataset(
                name='san_andres_y_providencia_poi_by_norman',
                title='san_andres_y_providencia_poi',
                owner_name=norman,
                geometry_type='Point')

            try:
                namespaces = {
                    'wms': 'http://www.opengis.net/wms',
                    'xlink': 'http://www.w3.org/1999/xlink',
                    'xsi': 'http://www.w3.org/2001/XMLSchema-instance'
                }
                url = urljoin(
                    settings.SITEURL,
                    reverse('capabilities_dataset', args=[saved_dataset.id]))
                resp = self.client.get(url)
                content = resp.content
                self.assertTrue(content)
                layercap = dlxml.fromstring(content)
                rootdoc = etree.ElementTree(layercap)
                layernodes = rootdoc.findall('./[wms:Name]', namespaces)
                layernode = layernodes[0]
                self.assertEqual(1, len(layernodes))
                self.assertEqual(
                    layernode.find('wms:Name', namespaces).text,
                    saved_dataset.name)
                self.client.logout()
                resp = self.client.get(url)
                layercap = dlxml.fromstring(resp.content)
                self.assertIsNotNone(layercap)
            finally:
                # Cleanup
                saved_dataset.delete()
Ejemplo n.º 3
0
    def test_capabilities(self):
        """Test capabilities
        """

        # a category
        category = TopicCategory.objects.first()

        # some users
        norman = get_user_model().objects.get(username="******")
        admin = get_user_model().objects.get(username="******")

        # create 3 layers, 2 with norman as an owner an 2 with category as a category
        layer1 = create_dataset(name='layer1',
                                title="san_andres_y_providencia_poi",
                                owner_name=norman,
                                geometry_type="Point")
        layer2 = create_dataset(name='layer2',
                                title="single_point",
                                owner_name=norman,
                                geometry_type="Point")
        layer2.category = category
        layer2.save()
        layer3 = create_dataset(
            name='layer3',
            title="san_andres_y_providencia_administrative",
            owner_name=admin,
            geometry_type="Point")
        layer3.category = category
        layer3.save()
        try:
            namespaces = {
                'wms': 'http://www.opengis.net/wms',
                'xlink': 'http://www.w3.org/1999/xlink',
                'xsi': 'http://www.w3.org/2001/XMLSchema-instance'
            }

            # 0. test capabilities_dataset
            url = reverse('capabilities_dataset', args=[layer1.id])
            resp = self.client.get(url)
            layercap = dlxml.fromstring(resp.content)
            rootdoc = etree.ElementTree(layercap)
            layernodes = rootdoc.findall('./[wms:Name]', namespaces)
            layernode = layernodes[0]

            self.assertEqual(1, len(layernodes))
            self.assertEqual(
                layernode.find('wms:Name', namespaces).text, layer1.name)

            # 1. test capabilities_user
            url = reverse('capabilities_user', args=[norman.username])
            resp = self.client.get(url)
            layercap = dlxml.fromstring(resp.content)
            rootdoc = etree.ElementTree(layercap)
            layernodes = rootdoc.findall('./[wms:Name]', namespaces)

            # norman has 2 layers
            self.assertEqual(1, len(layernodes))

            # the norman two layers are named layer1 and layer2
            count = 0
            for layernode in layernodes:
                if layernode.find('wms:Name', namespaces).text == layer1.name:
                    count += 1
                elif layernode.find('wms:Name',
                                    namespaces).text == layer2.name:
                    count += 1
            self.assertEqual(1, count)

            # 2. test capabilities_category
            url = reverse('capabilities_category', args=[category.identifier])
            resp = self.client.get(url)
            layercap = dlxml.fromstring(resp.content)
            rootdoc = etree.ElementTree(layercap)
            layernodes = rootdoc.findall('./[wms:Name]', namespaces)

            # category is in two layers
            self.assertEqual(1, len(layernodes))

            # the layers for category are named layer1 and layer3
            count = 0
            for layernode in layernodes:
                if layernode.find('wms:Name', namespaces).text == layer1.name:
                    count += 1
                elif layernode.find('wms:Name',
                                    namespaces).text == layer3.name:
                    count += 1
            self.assertEqual(1, count)

            # 3. test for a map
            # TODO
        finally:
            # Clean up and completely delete the layers
            layer1.delete()
            layer2.delete()
            layer3.delete()