summaryrefslogtreecommitdiff
path: root/archaeological_context_records
diff options
context:
space:
mode:
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
commite7039bdc30c43b488b8393338c53552de6cb0145 (patch)
tree67b2bd213c896327e2fac50e711f5f28a39ddb64 /archaeological_context_records
parent4c5ba5ce214e4c80fff3818abbf949a341be417a (diff)
downloadIshtar-e7039bdc30c43b488b8393338c53552de6cb0145.tar.bz2
Ishtar-e7039bdc30c43b488b8393338c53552de6cb0145.zip
Changing context record of a find (refs #3080)
Diffstat (limited to 'archaeological_context_records')
-rw-r--r--archaeological_context_records/forms.py2
-rw-r--r--archaeological_context_records/models.py8
-rw-r--r--archaeological_context_records/urls.py2
-rw-r--r--archaeological_context_records/views.py35
4 files changed, 41 insertions, 6 deletions
diff --git a/archaeological_context_records/forms.py b/archaeological_context_records/forms.py
index 5160c1c51..1a9fc12a6 100644
--- a/archaeological_context_records/forms.py
+++ b/archaeological_context_records/forms.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
diff --git a/archaeological_context_records/models.py b/archaeological_context_records/models.py
index bd18ab5d4..ddd9c8609 100644
--- a/archaeological_context_records/models.py
+++ b/archaeological_context_records/models.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
-# Copyright (C) 2012-2015 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2012-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
@@ -112,9 +112,8 @@ class ContextRecord(BaseHistorizedItem, OwnPerms, ShortMenuItem):
'label', 'unit']
if settings.COUNTRY == 'fr':
TABLE_COLS.insert(1, 'operation.code_patriarche')
- TABLE_COLS_FOR_OPE = [
- 'label', ['parcel.section', 'parcel.parcel_number'], 'unit',
- 'datings.period', 'description']
+ TABLE_COLS_FOR_OPE = ['label', 'parcel', 'unit',
+ 'datings.period', 'description']
TABLE_COLS_FOR_OPE_LBL = {'section__parcel_number': _("Parcel")}
external_id = models.CharField(_(u"External ID"), blank=True, null=True,
max_length=120)
@@ -210,6 +209,7 @@ class ContextRecord(BaseHistorizedItem, OwnPerms, ShortMenuItem):
Q(history_creator=user)
def full_label(self):
+ return unicode(self)
if not self.operation:
return unicode(self)
return self._real_label() or self._temp_label()
diff --git a/archaeological_context_records/urls.py b/archaeological_context_records/urls.py
index da6d80a98..509c33064 100644
--- a/archaeological_context_records/urls.py
+++ b/archaeological_context_records/urls.py
@@ -59,6 +59,8 @@ urlpatterns = patterns(
urlpatterns += patterns(
'archaeological_context_records.views',
+ url(r'autocomplete-contextrecord/$', 'autocomplete_contextrecord',
+ name='autocomplete-contextrecord'),
url(r'show-contextrecord(?:/(?P<pk>.+))?/(?P<type>.+)?$',
'show_contextrecord', name=models.ContextRecord.SHOW_URL),
url(r'show-historized-contextrecord/(?P<pk>.+)?/(?P<date>.+)?$',
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',