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-11-16 17:04:41 +0100
commitedf18b7c4bcd4026b84e2dda67c36a041dd6402b (patch)
tree7f9ef9adc46cb9d6865694a2079651f3cbe517b4
parent69bc18ff8424a5e2417919b0b381dd15973a89db (diff)
downloadIshtar-edf18b7c4bcd4026b84e2dda67c36a041dd6402b.tar.bz2
Ishtar-edf18b7c4bcd4026b84e2dda67c36a041dd6402b.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 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 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 2a6dd4be8..755ea23dd 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):