diff options
| -rw-r--r-- | archaeological_finds/tests.py | 13 | ||||
| -rw-r--r-- | archaeological_finds/urls.py | 4 | ||||
| -rw-r--r-- | archaeological_finds/views.py | 4 | ||||
| -rw-r--r-- | ishtar_common/models_common.py | 24 | 
4 files changed, 25 insertions, 20 deletions
| diff --git a/archaeological_finds/tests.py b/archaeological_finds/tests.py index 47ac7e72c..03ad0314e 100644 --- a/archaeological_finds/tests.py +++ b/archaeological_finds/tests.py @@ -2542,9 +2542,12 @@ class GeomaticTest(FindInit, TestCase):          base_find = models.BaseFind.objects.get(pk=base_find.pk)          dic = {              "type": "Feature", -            "geometry": {"type": "Point", "coordinates": [2.0, 43.0]}, +            "geometry": {"type": "MultiPolygon", "coordinates": []},          } -        res = base_find.get_geo_items() +        res = base_find.get_geo_items(get_polygons=True) +        self.assertEqual(dic, res) +        dic["geometry"] = {"type": "Point", "coordinates": [2.0, 43.0]} +        res = base_find.get_geo_items(get_polygons=False)          self.assertEqual(dic, res)          # test API @@ -2592,15 +2595,15 @@ class GeomaticTest(FindInit, TestCase):          response = self.client.get(              reverse(                  "api-get-geo-polygons", -                kwargs={"pk": base_find.pk, "get_polygons": True}, +                kwargs={"pk": base_find.pk},              )          )          self.assertEqual(response.status_code, 200)          self.assertIn(json.dumps(dict_poly).encode("utf-8"), response.content)          response = self.client.get(              reverse( -                "api-get-geo-polygons", -                kwargs={"pk": base_find.pk, "get_polygons": False}, +                "api-get-geo-point", +                kwargs={"pk": base_find.pk},              )          )          self.assertEqual(response.status_code, 200) diff --git a/archaeological_finds/urls.py b/archaeological_finds/urls.py index 06b0d4b42..e4ebb298a 100644 --- a/archaeological_finds/urls.py +++ b/archaeological_finds/urls.py @@ -574,11 +574,12 @@ urlpatterns = [      ),      url(r"api/public/find/$", views.PublicFindAPI.as_view(), name="api-public-find"),      url( -        r"api/ishtar/base-finds/geo/polygons/(?P<pk>[0-9]+)/(?P<get_polygons>(True|False)/?)?$", +        r"api/ishtar/base-finds/geo/polygons/(?P<pk>[0-9]+)/?$",          check_rights(["view_find", "view_own_find"])(              views.get_geo_items,          ),          name="api-get-geo-polygons", +        kwargs={"get_polygons": True},      ),      url(          r"api/ishtar/base-finds/geo/point/(?P<pk>[0-9]+)/$", @@ -586,6 +587,7 @@ urlpatterns = [              views.get_geo_items,          ),          name="api-get-geo-point", +        kwargs={"get_polygons": False},      ),  ] diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py index a29c7d274..6dab1b402 100644 --- a/archaeological_finds/views.py +++ b/archaeological_finds/views.py @@ -1338,9 +1338,9 @@ class PublicFindAPI(APIView):          return Response(serializer.data) -def get_geo_items(request, pk, get_polygons="False", current_right=None): +def get_geo_items(request, pk, get_polygons, current_right=None):      base_find = models.BaseFind.objects.get(pk=pk)      if not base_find:          return Http404() -    dic = base_find.get_geo_items(get_polygons=(get_polygons == "True")) +    dic = base_find.get_geo_items(get_polygons=get_polygons)      return HttpResponse(json.dumps(dic).encode("utf-8")) diff --git a/ishtar_common/models_common.py b/ishtar_common/models_common.py index da68aae54..22823a5d9 100644 --- a/ishtar_common/models_common.py +++ b/ishtar_common/models_common.py @@ -2856,14 +2856,14 @@ class GeoItem(models.Model):          if self.multi_polygon_source == "P" and self.multi_polygon:              return self.multi_polygon, self.multi_polygon_source_item -    def get_geo_items(self, get_polygons=False, rounded=True): +    def get_geo_items(self, get_polygons, rounded=True):          dict = {              "type": "Feature",              "geometry": {},          } -        if self.multi_polygon: -            if get_polygons: -                list_coords = [] +        if get_polygons: +            list_coords = [] +            if self.multi_polygon:                  for polygon in self.multi_polygon:                      list_coords.append([])                      for linear_ring in range(len(polygon)): @@ -2875,17 +2875,17 @@ class GeoItem(models.Model):                              list_coords[-1][linear_ring].append(                                  self.convert_coordinates(point_2d, rounded)                              ) -                dict["geometry"]["type"] = "MultiPolygon" -                dict["geometry"]["coordinates"] = list_coords -            else: -                dict["geometry"]["type"] = "Point" +            dict["geometry"]["type"] = "MultiPolygon" +            dict["geometry"]["coordinates"] = list_coords +        else: +            dict["geometry"]["type"] = "Point" +            if self.multi_polygon:                  dict["geometry"]["coordinates"] = self.convert_coordinates(                      self.multi_polygon.centroid, rounded                  ) -        else: -            dict["geometry"]["type"] = "Point" -            x, y = self.display_coordinates -            dict["geometry"]["coordinates"] = [x, y] +            else: +                x, y = self.display_coordinates +                dict["geometry"]["coordinates"] = [x, y]          return dict      def convert_coordinates(self, point_2d, rounded): | 
