summaryrefslogtreecommitdiff
path: root/archaeological_context_records/views.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2016-06-03 22:05:13 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2016-06-03 22:05:13 +0200
commitdd098e6bab668d5d602b2d5c4dd64af3d0aa62b4 (patch)
tree4fdfe0c828e975812fdc6a8ededba4995300ecc2 /archaeological_context_records/views.py
parent5f77b4d18fdd1f4b8c6e967d65dc949197a28243 (diff)
parent6bcaf64532e8b1ea76e5e74e3291fac2b238f838 (diff)
downloadIshtar-dd098e6bab668d5d602b2d5c4dd64af3d0aa62b4.tar.bz2
Ishtar-dd098e6bab668d5d602b2d5c4dd64af3d0aa62b4.zip
Merge branch 'master' into v0.9
Conflicts: ishtar_common/views.py
Diffstat (limited to 'archaeological_context_records/views.py')
-rw-r--r--archaeological_context_records/views.py35
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',