diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-03-16 19:48:43 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-05-09 20:58:16 +0200 |
commit | a850add6d883d0a0daed8d1c74da5ace6572431e (patch) | |
tree | 67b2bd213c896327e2fac50e711f5f28a39ddb64 /archaeological_context_records/views.py | |
parent | 2728c5a51c474429bea741dc469fd87ed48cee32 (diff) | |
download | Ishtar-a850add6d883d0a0daed8d1c74da5ace6572431e.tar.bz2 Ishtar-a850add6d883d0a0daed8d1c74da5ace6572431e.zip |
Changing context record of a find (refs #3080)
Diffstat (limited to 'archaeological_context_records/views.py')
-rw-r--r-- | archaeological_context_records/views.py | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/archaeological_context_records/views.py b/archaeological_context_records/views.py index 883b2c85e..839dbed9e 100644 --- a/archaeological_context_records/views.py +++ b/archaeological_context_records/views.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (C) 2010-2015 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> +# Copyright (C) 2010-2016 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as @@ -17,7 +17,11 @@ # See the file COPYING for details. +import json + from django.core.urlresolvers import reverse +from django.db.models import Q +from django.http import HttpResponse from django.shortcuts import redirect from django.utils.translation import ugettext_lazy as _ @@ -43,6 +47,35 @@ contextrecord_extra_keys = { 'archaeological_sites': 'operation__archaeological_sites__pk', } + +def autocomplete_contextrecord(request): + if (not request.user.has_perm( + 'archaeological_context_records.view_contextrecord', + models.ContextRecord) + and not request.user.has_perm( + 'archaeological_context_records.view_own_contextrecord', + models.ArchaeologicalSite)): + return HttpResponse(mimetype='text/plain') + if not request.GET.get('term'): + return HttpResponse(mimetype='text/plain') + q = request.GET.get('term') + query = Q() + if request.GET.get('operation__pk'): + query = Q(operation__pk=request.GET.get('operation__pk')) + for q in q.split(' '): + qt = Q(parcel__section__icontains=q) | \ + Q(parcel__parcel_number__icontains=q) | \ + Q(label__icontains=q) + query = query & qt + limit = 15 + items = models.ContextRecord.objects\ + .filter(query).order_by('parcel__section', 'parcel__parcel_number', + 'label')[:limit] + data = json.dumps([{'id': item.pk, + 'value': unicode(item)[:60]} + for item in items]) + return HttpResponse(data, mimetype='text/plain') + get_contextrecord = get_item( models.ContextRecord, 'get_contextrecord', 'contextrecord', |