diff options
author | QuentinAndre <quentin.andre@imt-atlantique.net> | 2021-07-09 17:49:35 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2021-09-01 12:36:46 +0200 |
commit | 43cf4e8d8654916830ef81840be56467d2c5aa9a (patch) | |
tree | 71ac8ebe59fdca7c339919f21a5aa77fe5ed0002 | |
parent | 8a1e0e0f73b6ceec826b891e05e387efe709f968 (diff) | |
download | Ishtar-43cf4e8d8654916830ef81840be56467d2c5aa9a.tar.bz2 Ishtar-43cf4e8d8654916830ef81840be56467d2c5aa9a.zip |
correction with kwargs for get_polygons
-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 cf1f47ba0..ee5420ebe 100644 --- a/archaeological_finds/tests.py +++ b/archaeological_finds/tests.py @@ -2524,9 +2524,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 @@ -2574,15 +2577,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 8b23c8be0..58125cc06 100644 --- a/archaeological_finds/urls.py +++ b/archaeological_finds/urls.py @@ -573,11 +573,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]+)/$", @@ -585,6 +586,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 ae0180d85..af0c5b11d 100644 --- a/archaeological_finds/views.py +++ b/archaeological_finds/views.py @@ -1318,9 +1318,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 982e02bf7..a58ec37ab 100644 --- a/ishtar_common/models_common.py +++ b/ishtar_common/models_common.py @@ -2847,14 +2847,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)): @@ -2866,17 +2866,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): |