summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQuentinAndre <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
commit43cf4e8d8654916830ef81840be56467d2c5aa9a (patch)
tree71ac8ebe59fdca7c339919f21a5aa77fe5ed0002
parent8a1e0e0f73b6ceec826b891e05e387efe709f968 (diff)
downloadIshtar-43cf4e8d8654916830ef81840be56467d2c5aa9a.tar.bz2
Ishtar-43cf4e8d8654916830ef81840be56467d2c5aa9a.zip
correction with kwargs for get_polygons
-rw-r--r--archaeological_finds/tests.py13
-rw-r--r--archaeological_finds/urls.py4
-rw-r--r--archaeological_finds/views.py4
-rw-r--r--ishtar_common/models_common.py24
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):