summaryrefslogtreecommitdiff
path: root/archaeological_finds
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2026-03-04 18:27:21 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2026-03-10 11:11:46 +0100
commit07cea621a56143b5685cff59a2c6273631b858bc (patch)
treea53410f556bc96aa61b3c4b315ca826ec63c83a7 /archaeological_finds
parent25f41c5e951a403056c11ac36f52252ab2d5d85c (diff)
downloadIshtar-07cea621a56143b5685cff59a2c6273631b858bc.tar.bz2
Ishtar-07cea621a56143b5685cff59a2c6273631b858bc.zip
🚧 Statement condition - document: views, urls
Diffstat (limited to 'archaeological_finds')
-rw-r--r--archaeological_finds/urls.py10
-rw-r--r--archaeological_finds/views.py33
2 files changed, 43 insertions, 0 deletions
diff --git a/archaeological_finds/urls.py b/archaeological_finds/urls.py
index 9a573198c..d1520d4ba 100644
--- a/archaeological_finds/urls.py
+++ b/archaeological_finds/urls.py
@@ -641,6 +641,11 @@ urlpatterns = [
name="autocomplete-exhibition",
),
re_path(
+ r"autocomplete-statementcondition/$",
+ views.autocomplete_statementcondition,
+ name="autocomplete-statementcondition",
+ ),
+ re_path(
r"get-find-for-ope/own/(?P<type>.+)?$",
views.get_find_for_ope,
name="get-own-find-for-ope",
@@ -858,6 +863,11 @@ urlpatterns = [
),
name="find-statement-condition-delete",
),
+ re_path(
+ r"^show-statementcondition/(?:(?P<pk>.+)/(?P<type>.+)?)?$",
+ views.show_statementcondition,
+ name="show-statementcondition",
+ ),
]
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 96b60587a..e294b4c6b 100644
--- a/archaeological_finds/views.py
+++ b/archaeological_finds/views.py
@@ -225,6 +225,31 @@ def autocomplete_exhibition(request):
return HttpResponse(data, content_type="text/plain")
+def autocomplete_statementcondition(request):
+ query = get_autocomplete_query(request, "archaeological_finds", "statementcondition")
+ if query is None:
+ return HttpResponse(content_type="text/plain")
+ if not request.GET.get("term"):
+ return HttpResponse(content_type="text/plain")
+ q = request.GET.get("term")
+ for q1 in q.split(" "):
+ for q in q1.split(" "):
+ extra = (
+ Q(campaign_number__icontains=q)
+ | Q(report_number__icontains=q)
+ | Q(find__cached_label__icontains=q)
+ )
+ try:
+ extra = extra | Q(date__year=int(q))
+ except ValueError:
+ pass
+ query = query & extra
+ limit = 20
+ items = models.StatementCondition.objects.filter(query).exclude(initial=True)[:limit]
+ data = json.dumps([{"id": item.pk, "value": str(item)} for item in items])
+ return HttpResponse(data, content_type="text/plain")
+
+
def show_basefind(request, pk, **dct):
q = models.Find.objects.filter(base_finds__pk=pk, downstream_treatment__isnull=True)
if not q.count():
@@ -1522,6 +1547,14 @@ def qa_gam_export_views(request, pk, *args, **kwargs):
return render(request, "ishtar/forms/qa_form.html", dct)
+def show_statementcondition(request, pk, **dct):
+ q = models.StatementCondition.objects.filter(pk=pk)
+ if not q.count():
+ return Http404()
+ find_pk = q.values_list("find_id", flat=True)[0]
+ return show_item(models.Find, "find")(request, find_pk, **dct)
+
+
def statement_condition_form(request, find_pk, statement_condition_pk=None,
current_right=None):
try: