summaryrefslogtreecommitdiff
path: root/archaeological_context_records/views.py
diff options
context:
space:
mode:
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',