Exemplo n.º 1
0
 def setUp(self) -> None:
     self.view = CrudViewFactory()
     self.prop_name = CrudViewProperty.objects.create(view=self.view,
                                                      key="name",
                                                      required=True,
                                                      json_schema={
                                                          'type': "string",
                                                          "title": "Name"
                                                      },
                                                      include_in_tile=True)
     self.prop_age = CrudViewProperty.objects.create(view=self.view,
                                                     key="age",
                                                     json_schema={
                                                         'type': "integer",
                                                         "title": "Age"
                                                     })
     self.prop_country = CrudViewProperty.objects.create(view=self.view,
                                                         key="country",
                                                         json_schema={
                                                             'type':
                                                             "string",
                                                             "title":
                                                             "Country"
                                                         })
     sync_layer_schema(self.view)
     sync_ui_schema(self.view)
     sync_properties_in_tiles(self.view)
 def setUp(self) -> None:
     self.view = CrudViewFactory()
     self.prop_name = CrudViewProperty.objects.create(view=self.view,
                                                      key="name",
                                                      required=True,
                                                      json_schema={
                                                          'type': "string",
                                                          "title": "Name"
                                                      })
     self.prop_age = CrudViewProperty.objects.create(view=self.view,
                                                     key="age",
                                                     json_schema={
                                                         'type': "integer",
                                                         "title": "Age"
                                                     })
     self.prop_country = CrudViewProperty.objects.create(view=self.view,
                                                         key="country",
                                                         json_schema={
                                                             'type':
                                                             "string",
                                                             "title":
                                                             "Country"
                                                         })
     sync_layer_schema(self.view)
     sync_ui_schema(self.view)
     self.feature = Feature.objects.create(layer=self.view.layer,
                                           geom='POINT(0 0)',
                                           properties={
                                               "name": None,
                                               "age": 15,
                                               "country": "Country"
                                           })
Exemplo n.º 3
0
 def setUp(self) -> None:
     self.view = CrudViewFactory()
     self.extra_layer = LayerExtraGeom.objects.create(layer=self.view.layer,
                                                      title="extra")
     self.feature = Feature.objects.create(layer=self.view.layer,
                                           geom='POINT(0 0)')
     self.extra_geometry = FeatureExtraGeom.objects.create(
         feature=self.feature,
         layer_extra_geom=self.extra_layer,
         geom='POINT(0 0)')
Exemplo n.º 4
0
    def setUp(self):
        self.test_value = "PotatoSalad"
        self.layer = LayerFactory.create(
            geom_type=GeometryTypes.LineString,
            schema={
                "type": "object",
                "required": [
                    "name",
                ],
                "properties": {
                    "name": {
                        "type": "string",
                        "title": "Name"
                    }
                },
            },
        )
        self.crud_view = CrudViewFactory(layer=self.layer)
        CrudViewProperty.objects.create(
            view=self.crud_view,
            key="length",
            editable=False,
            json_schema={
                "type": "integer",
                "title": "Length"
            },
            function_path="test_terra_geocrud.functions_test.get_length_km",
        )
        CrudViewProperty.objects.create(
            view=self.crud_view,
            key="name",
            editable=True,
            json_schema={
                "type": "string",
                "title": "Name"
            },
        )
        self.test_prop = CrudViewProperty.objects.create(
            view=self.crud_view,
            key="test_property",
            editable=True,
            json_schema={
                "type": "string",
                "title": "Test Property"
            },
        )
        sync_layer_schema(self.crud_view)

        self.new_object = Feature.objects.create(
            layer=self.crud_view.layer,
            properties={"name": "super test"},
            geom=LineString((0, 0), (1, 0)),
        )
Exemplo n.º 5
0
    def setUp(self):

        layer = LayerFactory.create(geom_type=GeometryTypes.LineString,
                                    schema={
                                        "type": "object",
                                        "required": [
                                            "name",
                                        ],
                                        "properties": {
                                            "name": {
                                                "type": "string",
                                                "title": "Name"
                                            }
                                        }
                                    })
        self.crud_view = CrudViewFactory(layer=layer)
        self.prop_length = CrudViewProperty.objects.create(
            view=self.crud_view,
            key="length",
            editable=False,
            json_schema={
                'type': "integer",
                "title": "Length"
            },
            function_path='test_terra_geocrud.functions_test.get_length')
        self.prop_name = CrudViewProperty.objects.create(view=self.crud_view,
                                                         key="name",
                                                         editable=True,
                                                         json_schema={
                                                             'type': "string",
                                                             "title": "Name"
                                                         })
        sync_layer_schema(self.crud_view)
        with patch('terra_geocrud.signals.execute_async_func') as mocked_async:
            self.add_side_effect_async(mocked_async)
            with patch('geostore.settings.GEOSTORE_RELATION_CELERY_ASYNC',
                       new_callable=PropertyMock) as mocked:
                mocked.return_value = True
                self.feature = Feature.objects.create(
                    layer=self.crud_view.layer,
                    properties={'name': 'toto'},
                    geom=LineString((0, 0), (1, 0)))
                self.feature_long = Feature.objects.create(
                    layer=self.crud_view.layer,
                    properties={'name': 'tata'},
                    geom=LineString((0, 0), (10, 10)))
Exemplo n.º 6
0
 def setUp(self) -> None:
     self.crud_view = CrudViewFactory()
     self.feature = Feature.objects.create(layer=self.crud_view.layer,
                                           properties={'name': 'toto'},
                                           geom=Point(0, 0))
     self.feature_picture = FeaturePictureFactory(feature=self.feature)
Exemplo n.º 7
0
    def setUp(self):

        layer = LayerFactory.create(geom_type=GeometryTypes.LineString,
                                    schema={
                                        "type": "object",
                                        "required": [
                                            "name",
                                        ],
                                        "properties": {
                                            "name": {
                                                "type": "string",
                                                "title": "Name"
                                            }
                                        }
                                    })
        self.crud_view = CrudViewFactory(layer=layer)
        self.layer_city = LayerFactory.create(geom_type=GeometryTypes.Polygon,
                                              schema={
                                                  "type": "object",
                                                  "required": [
                                                      "name",
                                                  ],
                                                  "properties": {
                                                      "name": {
                                                          "type": "string",
                                                          "title": "Name"
                                                      }
                                                  }
                                              })
        crud_view = CrudViewFactory.create(layer=self.layer_city)
        with patch(
                'terra_geocrud.tasks.feature_update_relations_and_properties.delay'
        ):
            self.layer_relation = LayerRelation.objects.create(
                name='cities',
                relation_type='intersects',
                origin=self.crud_view.layer,
                destination=crud_view.layer)

        self.prop_name = CrudViewProperty.objects.create(view=self.crud_view,
                                                         key="name",
                                                         editable=True,
                                                         json_schema={
                                                             'type': "string",
                                                             "title": "Name"
                                                         })
        self.prop_relation_first_city = CrudViewProperty.objects.create(
            view=self.crud_view,
            key="city",
            editable=False,
            json_schema={
                'type': "array",
                "items": {
                    "type": "string"
                }
            },
            function_path='test_terra_geocrud.functions_test.get_cities')
        sync_layer_schema(self.crud_view)
        sync_layer_schema(crud_view)
        with patch('terra_geocrud.signals.execute_async_func') as mocked_async:
            self.add_side_effect_async(mocked_async)
            with patch('geostore.settings.GEOSTORE_RELATION_CELERY_ASYNC',
                       new_callable=PropertyMock) as mocked:
                mocked.return_value = True
                self.feature = Feature.objects.create(
                    layer=self.crud_view.layer,
                    properties={'name': 'toto'},
                    geom=LineString((0, 0), (1, 0)))
                self.feature_long = Feature.objects.create(
                    layer=self.crud_view.layer,
                    properties={'name': 'tata'},
                    geom=LineString((0, 0), (10, 10)))
        self.feature_city_first = Feature.objects.create(
            layer=self.layer_city,
            properties={"name": "Ville 0 0"},
            geom=Polygon(((0, 0), (5, 0), (5, 5), (0, 5), (0, 0))),
        )
        Feature.objects.create(layer=self.layer_city,
                               properties={"name": "Ville 5 5"},
                               geom=Polygon(((5, 5), (10, 5), (10, 10),
                                             (5, 10), (5, 5))))

        Feature.objects.create(layer=self.layer_city,
                               properties={"name": "Ville 11 11"},
                               geom=Polygon(((11, 11), (12, 11), (12, 12),
                                             (11, 12), (11, 11))))
Exemplo n.º 8
0
    def test_signal_start_end_cities(self, property_mocked, async_mocked,
                                     mock_delay):
        property_mocked.return_value = True
        self.add_side_effect_async(async_mocked)

        layer = LayerFactory.create(geom_type=GeometryTypes.Polygon,
                                    schema={
                                        "type": "object",
                                        "required": [
                                            "name",
                                        ],
                                        "properties": {
                                            "name": {
                                                "type": "string",
                                                "title": "Name"
                                            }
                                        }
                                    })
        crud_view = CrudViewFactory.create(layer=layer)
        LayerRelation.objects.create(name='cities',
                                     relation_type='intersects',
                                     origin=self.crud_view.layer,
                                     destination=crud_view.layer)

        self.prop_relation_first_city = CrudViewProperty.objects.create(
            view=self.crud_view,
            key="first_city",
            editable=False,
            json_schema={'type': "string"},
            function_path='test_terra_geocrud.functions_test.get_first_city')

        self.prop_relation_last_city = CrudViewProperty.objects.create(
            view=self.crud_view,
            key="last_city",
            editable=False,
            json_schema={'type': "string"},
            function_path='test_terra_geocrud.functions_test.get_last_city')

        sync_layer_schema(self.crud_view)
        sync_layer_schema(crud_view)

        self.feature_long.refresh_from_db()
        self.feature_long.save()
        self.feature_long.refresh_from_db()

        self.assertEqual(self.feature_long.properties, {
            'name': 'tata',
            'first_city': '',
            'last_city': ''
        })

        Feature.objects.create(
            layer=layer,
            properties={"name": "Ville 0 0"},
            geom=Polygon(((0, 0), (5, 0), (5, 5), (0, 5), (0, 0))),
        )
        Feature.objects.create(layer=layer,
                               properties={"name": "Ville 5 5"},
                               geom=Polygon(((5, 5), (10, 5), (10, 10),
                                             (5, 10), (5, 5))))
        self.feature_long.refresh_from_db()
        self.feature_long.save()
        self.feature_long.refresh_from_db()

        feature = Feature.objects.get(pk=self.feature_long.pk)
        self.assertEqual(feature.properties, {
            'first_city': 'Ville 0 0',
            'last_city': 'Ville 5 5',
            'name': 'tata'
        })
Exemplo n.º 9
0
    def test_signal_function_with_relation(self, property_mocked, async_mocked,
                                           mock_delay):
        property_mocked.return_value = True
        self.add_side_effect_async(async_mocked)
        layer = LayerFactory.create(geom_type=GeometryTypes.LineString,
                                    schema={
                                        "type": "object",
                                        "required": [
                                            "name",
                                        ],
                                        "properties": {
                                            "name": {
                                                "type": "string",
                                                "title": "Name"
                                            }
                                        }
                                    })
        crud_view = CrudViewFactory.create(layer=layer)
        self.prop_relation = CrudViewProperty.objects.create(
            view=self.crud_view,
            key="cities",
            editable=False,
            json_schema={
                'type': "array",
                "items": {
                    "type": "string"
                }
            },
            function_path='test_terra_geocrud.functions_test.get_cities')

        sync_layer_schema(self.crud_view)
        sync_layer_schema(crud_view)

        self.feature.save()
        self.feature.refresh_from_db()

        self.assertEqual(self.feature.properties, {
            'name': 'toto',
            'length': 1.0,
            'cities': []
        })
        LayerRelation.objects.create(name='cities',
                                     relation_type='distance',
                                     origin=self.crud_view.layer,
                                     destination=crud_view.layer,
                                     settings={"distance": 100})
        self.feature.save()

        self.feature.refresh_from_db()
        self.assertEqual(self.feature.properties, {
            'name': 'toto',
            'length': 1.0,
            'cities': []
        })

        feature_intersect = Feature.objects.create(layer=layer,
                                                   properties={},
                                                   geom=LineString((0, 0),
                                                                   (10, 0)))

        self.feature.refresh_from_db()
        self.feature.save()
        self.feature.refresh_from_db()

        self.assertEqual(self.feature.properties, {
            'name': 'toto',
            'length': 1.0,
            'cities': []
        })

        feature_intersect.properties = {'name': 'City'}
        feature_intersect.save()

        self.feature.refresh_from_db()
        self.feature.save()
        self.feature.refresh_from_db()

        self.assertEqual(self.feature.properties, {
            'name': 'toto',
            'length': 1.0,
            'cities': ['City']
        })