summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--archaeological_finds/tests.py31
-rw-r--r--archaeological_finds/urls.py5
-rw-r--r--archaeological_finds/views.py128
3 files changed, 94 insertions, 70 deletions
diff --git a/archaeological_finds/tests.py b/archaeological_finds/tests.py
index 48f0749b9..2a98ef381 100644
--- a/archaeological_finds/tests.py
+++ b/archaeological_finds/tests.py
@@ -2203,11 +2203,13 @@ class GeomaticTest(FindInit, TestCase):
def setUp(self):
self.create_finds(data_base={"label": "Find 1"}, force=True)
-
- def test_point_precision(self):
- self.username = "myuser"
self.password = "mypassword"
+ self.username = "myuser"
User.objects.create_superuser(self.username, "myemail@test.com", self.password)
+ self.client = Client()
+ self.client.login(username=self.username, password=self.password)
+
+ def test_point_precision(self):
profile, created = IshtarSiteProfile.objects.get_or_create(
slug="default", active=True
)
@@ -2223,14 +2225,13 @@ class GeomaticTest(FindInit, TestCase):
base_find.save()
find = base_find.find.all()[0]
- c = Client()
- c.login(username=self.username, password=self.password)
- response = c.get(reverse("show-find", kwargs={"pk": find.pk}))
+ response = self.client.get(reverse("show-find", kwargs={"pk": find.pk}))
self.assertIn(b"33.12999", response.content)
+
profile.point_precision = 2
profile.save()
- response = c.get(reverse("show-find", kwargs={"pk": find.pk}))
+ response = self.client.get(reverse("show-find", kwargs={"pk": find.pk}))
self.assertIn(b"33.13", response.content)
def test_update_container_localisation_on_warehouse_update(self):
@@ -2553,6 +2554,12 @@ class GeomaticTest(FindInit, TestCase):
res = base_find.get_geo_items(get_polygons=False)
self.assertEqual(dic, res)
+ # test API
+ find = base_find.find.all()[0]
+ response = self.client.get(reverse("api-get-geo-items", kwargs={"pk": find.pk}))
+ self.assertEqual(response.status_code, 200)
+ self.assertIn(json.dumps(dic).encode('utf-8'), response.content)
+
# with multi-polygon
base_find = models.BaseFind.objects.get(pk=base_find.pk)
limit = (
@@ -2593,6 +2600,16 @@ class GeomaticTest(FindInit, TestCase):
res_centroid = base_find.get_geo_items(get_polygons=False)
self.assertEqual(dict_centroid, res_centroid)
+ # test API
+ response = self.client.get(reverse("api-get-geo-items", kwargs={"pk": base_find.pk, "get_polygons": True}))
+ 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-items", kwargs={"pk": base_find.pk, "get_polygons": False}))
+ self.assertEqual(response.status_code, 200)
+ self.assertIn(json.dumps(dict_centroid).encode('utf-8'), response.content)
+
+
+
class AutocompleteTest(AutocompleteTestBase, TestCase):
fixtures = FIND_FIXTURES
models = [
diff --git a/archaeological_finds/urls.py b/archaeological_finds/urls.py
index 8a2a30d2c..0dc04b4f9 100644
--- a/archaeological_finds/urls.py
+++ b/archaeological_finds/urls.py
@@ -573,6 +573,11 @@ urlpatterns = [
name="autocomplete-findbasket-write",
),
url(r"api/public/find/$", views.PublicFindAPI.as_view(), name="api-public-find"),
+ url(r"api/ishtar/finds/geo/(?P<pk>.+)/(?P<get_polygons>.+)?$",
+ check_rights(["view_find", "view_own_find"])(
+ views.get_geo_items,
+ ),
+ name="api-get-geo-items"),
]
urlpatterns += get_urls_for_model(models.Find, views, own=True, autocomplete=True)
diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py
index 80a92ac2b..957b1952c 100644
--- a/archaeological_finds/views.py
+++ b/archaeological_finds/views.py
@@ -98,7 +98,6 @@ get_find_for_ope = get_item(
models.Find, "get_find", "find", own_table_cols=get_table_cols_for_ope()
)
-
get_find_for_cr = get_item(
models.Find, "get_find", "find", own_table_cols=get_table_cols_for_cr()
)
@@ -122,7 +121,6 @@ get_find_inside_container = get_item(
autocomplete_find = get_autocomplete_item(model=models.Find)
-
show_treatment = show_item(models.Treatment, "treatment")
revert_treatment = revert_item(models.Treatment)
get_treatment = get_item(
@@ -158,13 +156,13 @@ get_administrativeacttreatmentfile = get_item(
def autocomplete_treatmentfile(request):
if (
- not request.user.has_perm("ishtar_common.view_treatment", models.Treatment)
- and not request.user.has_perm(
- "ishtar_common.view_own_treatment", models.Treatment
- )
- and not request.user.ishtaruser.has_right(
- "treatmentfile_search", session=request.session
- )
+ not request.user.has_perm("ishtar_common.view_treatment", models.Treatment)
+ and not request.user.has_perm(
+ "ishtar_common.view_own_treatment", models.Treatment
+ )
+ and not request.user.ishtaruser.has_right(
+ "treatmentfile_search", session=request.session
+ )
):
return HttpResponse(content_type="text/plain")
if not request.GET.get("term"):
@@ -174,9 +172,9 @@ def autocomplete_treatmentfile(request):
for q1 in q.split(" "):
for q in q1.split(" "):
extra = (
- Q(internal_reference__icontains=q)
- | Q(external_id__icontains=q)
- | Q(name__icontains=q)
+ Q(internal_reference__icontains=q)
+ | Q(external_id__icontains=q)
+ | Q(name__icontains=q)
)
try:
int(q)
@@ -204,10 +202,10 @@ def show_find_extra(request, find):
user = request.user.ishtaruser
q = (
models.FindBasket.objects.filter(items__pk=find.pk)
- .filter(
+ .filter(
Q(user=user) | Q(shared_with__pk=user.pk) | Q(shared_write_with__pk=user.pk)
)
- .distinct()
+ .distinct()
)
return {"baskets": [(basket.pk, basket.full_label) for basket in q.all()]}
@@ -317,7 +315,6 @@ findbasket_deletion_steps = [
("final-find_basket_deletion", FinalForm),
]
-
basket_delete_wizard = wizards.FindBasketDeletionWizard.as_view(
findbasket_deletion_steps,
label=_("Basket deletion"),
@@ -512,8 +509,8 @@ class OwnBasket(object):
models.FindBasket.objects.filter(
Q(user=user) | Q(shared_with=user) | Q(shared_write_with=user)
)
- .distinct()
- .get(pk=pk)
+ .distinct()
+ .get(pk=pk)
)
except models.FindBasket.DoesNotExist:
raise PermissionDenied
@@ -610,9 +607,9 @@ class FindBasketDeleteItemView(
basket = self.get_basket(user=ishtaruser, pk=self.kwargs["basket"])
if (
- not user.is_superuser
- and not ishtaruser.has_right("view_find")
- and not (ishtaruser.has_right("view_own_find") and find.is_own(user))
+ not user.is_superuser
+ and not ishtaruser.has_right("view_find")
+ and not (ishtaruser.has_right("view_own_find") and find.is_own(user))
):
raise PermissionDenied
basket.items.remove(find)
@@ -634,7 +631,6 @@ treatment_wizard_steps = [
("final-treatment_creation", FinalForm),
]
-
treatment_search_wizard = wizards.TreatmentSearch.as_view(
[("general-treatment_search", forms.TreatmentFormSelection)],
label=_("Treatment search"),
@@ -689,7 +685,7 @@ treatment_modification_wizard = wizards.TreatmentModificationWizard.as_view(
def treatment_modify(request, pk):
if not wizard_is_available(
- treatment_modification_wizard, request, models.Treatment, pk
+ treatment_modification_wizard, request, models.Treatment, pk
):
return HttpResponseRedirect("/")
wizards.TreatmentModificationWizard.session_set_value(
@@ -857,7 +853,7 @@ treatment_deletion_wizard = wizards.TreatmentDeletionWizard.as_view(
def treatment_delete(request, pk):
if not wizard_is_available(
- treatment_deletion_wizard, request, models.Treatment, pk
+ treatment_deletion_wizard, request, models.Treatment, pk
):
return HttpResponseRedirect("/")
wizards.TreatmentDeletionWizard.session_set_value(
@@ -913,7 +909,7 @@ treatment_administrativeact_modification_wizard = (
def treatment_administrativeacttreatment_modify(request, pk):
if not wizard_is_available(
- treatment_administrativeact_modification_wizard, request, AdministrativeAct, pk
+ treatment_administrativeact_modification_wizard, request, AdministrativeAct, pk
):
return HttpResponseRedirect("/")
wizards.TreatmentEditAdministrativeActWizard.session_set_value(
@@ -942,7 +938,7 @@ treatment_admacttreatment_deletion_wizard = AdministrativeActDeletionWizard.as_v
def treatment_administrativeacttreatment_delete(request, pk):
if not wizard_is_available(
- treatment_admacttreatment_deletion_wizard, request, AdministrativeAct, pk
+ treatment_admacttreatment_deletion_wizard, request, AdministrativeAct, pk
):
return HttpResponseRedirect("/")
wizard_url = "treatment_admacttreatment_deletion"
@@ -983,7 +979,6 @@ treatmentfile_wizard_steps = [
("final-treatmentfile_creation", FinalForm),
]
-
treatmentfile_creation_wizard = wizards.TreatmentFileWizard.as_view(
treatmentfile_wizard_steps,
label=_("New treatment request"),
@@ -1003,7 +998,7 @@ treatmentfile_modification_wizard = wizards.TreatmentFileModificationWizard.as_v
def treatmentfile_modify(request, pk):
if not wizard_is_available(
- treatmentfile_modification_wizard, request, models.TreatmentFile, pk
+ treatmentfile_modification_wizard, request, models.TreatmentFile, pk
):
return HttpResponseRedirect("/")
wizards.TreatmentFileModificationWizard.session_set_value(
@@ -1046,7 +1041,7 @@ treatmentfile_deletion_wizard = wizards.TreatmentFileDeletionWizard.as_view(
def treatmentfile_delete(request, pk):
if not wizard_is_available(
- treatmentfile_deletion_wizard, request, models.TreatmentFile, pk
+ treatmentfile_deletion_wizard, request, models.TreatmentFile, pk
):
return HttpResponseRedirect("/")
wizard_url = "treatmentfile_deletion"
@@ -1067,7 +1062,6 @@ treatmentfile_admacttreatmentfile_search_wizard = wizards.SearchWizard.as_view(
url_name="treatmentfle_admacttreatmentfle_search",
)
-
treatmentfile_admacttreatmentfile_wizard = (
wizards.TreatmentFileAdministrativeActWizard.as_view(
[
@@ -1104,10 +1098,10 @@ treatmentfile_admacttreatmentfile_modification_wizard = (
def treatmentfile_administrativeacttreatmentfile_modify(request, pk):
if not wizard_is_available(
- treatmentfile_admacttreatmentfile_modification_wizard,
- request,
- AdministrativeAct,
- pk,
+ treatmentfile_admacttreatmentfile_modification_wizard,
+ request,
+ AdministrativeAct,
+ pk,
):
return HttpResponseRedirect("/")
wizards.TreatmentFileEditAdministrativeActWizard.session_set_value(
@@ -1163,10 +1157,10 @@ treatmentfile_admacttreatmentfile_deletion_wizard = (
def treatmentfile_administrativeacttreatmentfile_delete(request, pk):
if not wizard_is_available(
- treatmentfile_admacttreatmentfile_deletion_wizard,
- request,
- AdministrativeAct,
- pk,
+ treatmentfile_admacttreatmentfile_deletion_wizard,
+ request,
+ AdministrativeAct,
+ pk,
):
return HttpResponseRedirect("/")
wizard_url = "treatmentfle_admacttreatmentfle_deletion"
@@ -1178,30 +1172,30 @@ def treatmentfile_administrativeacttreatmentfile_delete(request, pk):
def reset_wizards(request):
for wizard_class, url_name in (
- (wizards.FindWizard, "find_creation"),
- (wizards.FindModificationWizard, "find_modification"),
- (wizards.FindDeletionWizard, "find_deletion"),
- (wizards.TreatmentWizard, "treatement_creation"),
- (wizards.TreatmentModificationWizard, "treatment_modification"),
- (wizards.TreatmentDeletionWizard, "treatment_deletion"),
- (wizards.TreatmentAdministrativeActWizard, "treatment_admacttreatment"),
- (
- wizards.TreatmentEditAdministrativeActWizard,
- "treatment_admacttreatment_modification",
- ),
- (wizards.TreatmentDeletionWizard, "treatment_admacttreatment_deletion"),
- (wizards.TreatmentFileWizard, "treatmentfile_creation"),
- (wizards.TreatmentFileModificationWizard, "treatmentfile_modification"),
- (wizards.TreatmentFileDeletionWizard, "treatmentfile_deletion"),
- (
- wizards.TreatmentFileAdministrativeActWizard,
- "treatmentfle_admacttreatmentfle",
- ),
- (
- wizards.TreatmentFileEditAdministrativeActWizard,
- "treatmentfle_admacttreatmentfle_modification",
- ),
- (AdministrativeActDeletionWizard, "treatmentfle_admacttreatmentfle_deletion"),
+ (wizards.FindWizard, "find_creation"),
+ (wizards.FindModificationWizard, "find_modification"),
+ (wizards.FindDeletionWizard, "find_deletion"),
+ (wizards.TreatmentWizard, "treatement_creation"),
+ (wizards.TreatmentModificationWizard, "treatment_modification"),
+ (wizards.TreatmentDeletionWizard, "treatment_deletion"),
+ (wizards.TreatmentAdministrativeActWizard, "treatment_admacttreatment"),
+ (
+ wizards.TreatmentEditAdministrativeActWizard,
+ "treatment_admacttreatment_modification",
+ ),
+ (wizards.TreatmentDeletionWizard, "treatment_admacttreatment_deletion"),
+ (wizards.TreatmentFileWizard, "treatmentfile_creation"),
+ (wizards.TreatmentFileModificationWizard, "treatmentfile_modification"),
+ (wizards.TreatmentFileDeletionWizard, "treatmentfile_deletion"),
+ (
+ wizards.TreatmentFileAdministrativeActWizard,
+ "treatmentfle_admacttreatmentfle",
+ ),
+ (
+ wizards.TreatmentFileEditAdministrativeActWizard,
+ "treatmentfle_admacttreatmentfle_modification",
+ ),
+ (AdministrativeActDeletionWizard, "treatmentfle_admacttreatmentfle_deletion"),
):
wizard_class.session_reset(request, url_name)
@@ -1326,8 +1320,8 @@ class PublicFindAPI(APIView):
return empty
q = (
models.FindBasket.items.through.objects.filter(findbasket_id=basket.id)
- .values("find_id")
- .order_by("id")
+ .values("find_id")
+ .order_by("id")
)
id_list = [bi["find_id"] for bi in q]
clauses = " ".join(
@@ -1342,3 +1336,11 @@ class PublicFindAPI(APIView):
def get(self, request, format=None):
serializer = PublicSerializer(self.get_queryset(), many=True)
return Response(serializer.data)
+
+
+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"))
+ return HttpResponse(json.dumps(dic).encode('utf-8'))