summaryrefslogtreecommitdiff
path: root/archaeological_operations/views.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2020-12-04 16:12:23 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2021-02-28 12:15:22 +0100
commit79fd79177cc6ab59315ed71fd0e2cb0f1fcd0f71 (patch)
tree9367c07079dc213b09d6dff6719fe3bb49aa3e67 /archaeological_operations/views.py
parentdf8486df514668440a8cc68448d95c1beafdb24a (diff)
downloadIshtar-79fd79177cc6ab59315ed71fd0e2cb0f1fcd0f71.tar.bz2
Ishtar-79fd79177cc6ab59315ed71fd0e2cb0f1fcd0f71.zip
Add documents to administrative acts (refs #4999)
Diffstat (limited to 'archaeological_operations/views.py')
-rw-r--r--archaeological_operations/views.py33
1 files changed, 31 insertions, 2 deletions
diff --git a/archaeological_operations/views.py b/archaeological_operations/views.py
index 897302828..0c3dc28a1 100644
--- a/archaeological_operations/views.py
+++ b/archaeological_operations/views.py
@@ -84,7 +84,7 @@ def autocomplete_archaeologicalsite(request):
query = query & qt
limit = 15
sites = models.ArchaeologicalSite.objects.filter(
- query).order_by('reference')[:limit]
+ query).distinct().order_by('reference')[:limit]
data = json.dumps([{'id': site.pk,
'value': str(site)[:60]}
for site in sites])
@@ -125,7 +125,7 @@ def autocomplete_operation(request):
pass
query = query & extra
limit = 15
- operations = models.Operation.objects.filter(query)[:limit]
+ operations = models.Operation.objects.filter(query).distinct()[:limit]
data = json.dumps([{'id': operation.pk, 'value': str(operation)}
for operation in operations])
return HttpResponse(data, content_type='text/plain')
@@ -566,6 +566,35 @@ def administrativeactfile_document(
return render(request, 'ishtar/administrativeact_document.html', dct)
+def autocomplete_administrativeact(request):
+ if (not request.user.has_perm(
+ 'archaeological_operations.view_administrativeact',
+ models.AdministrativeAct)
+ and not request.user.has_perm(
+ 'archaeological_operations.view_own_administrativeact',
+ models.AdministrativeAct)):
+ return HttpResponse(content_type='text/plain')
+ if not request.GET.get('term'):
+ return HttpResponse(content_type='text/plain')
+ q = request.GET.get('term')
+ query = Q()
+ for q in q.split(' '):
+ qt = Q(act_type__label__icontains=q) | Q(towns_label=q)
+ try:
+ if len(q) == 4:
+ qt |= Q(year=int(q))
+ qt |= Q(index=int(q))
+ except ValueError:
+ pass
+ query = query & qt
+ limit = 15
+ items = models.AdministrativeAct.objects.filter(
+ query).order_by('year', 'index').distinct()[:limit]
+ data = json.dumps([{'id': item.pk, 'value': str(item)[:80] + " (...)"}
+ for item in items])
+ return HttpResponse(data, content_type='text/plain')
+
+
def reset_wizards(request):
for wizard_class, url_name in (
(wizards.OperationWizard, 'operation_creation'),