diff options
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 |
commit | 79fd79177cc6ab59315ed71fd0e2cb0f1fcd0f71 (patch) | |
tree | 9367c07079dc213b09d6dff6719fe3bb49aa3e67 /archaeological_operations/views.py | |
parent | df8486df514668440a8cc68448d95c1beafdb24a (diff) | |
download | Ishtar-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.py | 33 |
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'), |