summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@peacefrogs.net>2011-01-11 01:31:24 +0100
committerÉtienne Loks <etienne.loks@peacefrogs.net>2011-01-11 01:31:24 +0100
commit7188b66fb8d0b1d78d706c3c39389029b1b5e86a (patch)
tree115aa3823e1d37d13e204f416fe7a9d0460f4696
parent0bdb0936333d775c15e40ac8c8f1eadef3885fb0 (diff)
downloadIshtar-7188b66fb8d0b1d78d706c3c39389029b1b5e86a.tar.bz2
Ishtar-7188b66fb8d0b1d78d706c3c39389029b1b5e86a.zip
Person in charge of archeological file are filtered to be a scientific agent (closes #73)
-rw-r--r--ishtar/furnitures/forms.py7
-rw-r--r--ishtar/furnitures/urls.py2
-rw-r--r--ishtar/furnitures/views.py10
3 files changed, 14 insertions, 5 deletions
diff --git a/ishtar/furnitures/forms.py b/ishtar/furnitures/forms.py
index 5f1b0beb8..ac303a473 100644
--- a/ishtar/furnitures/forms.py
+++ b/ishtar/furnitures/forms.py
@@ -442,9 +442,10 @@ class FileFormGeneral(forms.Form):
associated_models = {'in_charge':models.Person,
'file_type':models.FileType}
in_charge = forms.IntegerField(label=_("Person in charge"),
- widget=widgets.JQueryAutoComplete(reverse_lazy('autocomplete-person'),
- associated_model=models.Person),
- validators=[models.valid_id(models.Person)])
+ widget=widgets.JQueryAutoComplete(reverse_lazy('autocomplete-person',
+ args=[models.PersonType.objects.get(txt_idx='sra_agent').pk]),
+ associated_model=models.Person),
+ validators=[models.valid_id(models.Person)])
year = forms.IntegerField(label=_("Year"),
initial=lambda:datetime.datetime.now().year,
validators=[validators.MinValueValidator(1900),
diff --git a/ishtar/furnitures/urls.py b/ishtar/furnitures/urls.py
index 762aa135f..b7ff515af 100644
--- a/ishtar/furnitures/urls.py
+++ b/ishtar/furnitures/urls.py
@@ -39,7 +39,7 @@ actions = r"|".join(actions)
urlpatterns += patterns('ishtar.furnitures.views',
url(BASE_URL + r'(?P<action_slug>' + actions + r')/$', 'action',
name='action'),
- url(BASE_URL + r'autocomplete-persone/$', 'autocomplete_person',
+ url(BASE_URL + r'autocomplete-persone/([0-9_]+)?$', 'autocomplete_person',
name='autocomplete-person'),
url(BASE_URL + r'autocomplete-town/$', 'autocomplete_town',
name='autocomplete-town'),
diff --git a/ishtar/furnitures/views.py b/ishtar/furnitures/views.py
index ba05d0b39..00773bc42 100644
--- a/ishtar/furnitures/views.py
+++ b/ishtar/furnitures/views.py
@@ -26,6 +26,7 @@ from django.http import HttpResponse
from django.template import RequestContext
from django.shortcuts import render_to_response, redirect
from django.utils.translation import ugettext, ugettext_lazy as _
+from django.core.exceptions import ObjectDoesNotExist
from django.db.models import Q
from django.core import serializers
@@ -55,7 +56,7 @@ def check_permission(request, action_slug, obj_id=None):
return menu.items[action_slug].is_available(request.user, obj_id)
return menu.items[action_slug].can_be_available(request.user)
-def autocomplete_person(request):
+def autocomplete_person(request, person_type=None):
if not request.user.has_perm('furnitures.view_person'):
return HttpResponse(mimetype='text/plain')
if not request.GET.get('term'):
@@ -70,6 +71,13 @@ def autocomplete_person(request):
for q in q.split(' '):
query = query & (Q(name__istartswith=q) | Q(surname__istartswith=q) | \
Q(email__icontains=q))
+ if person_type:
+ try:
+ typs = [int(tp) for tp in person_type.split('_') if tp]
+ typ = models.PersonType.objects.filter(pk__in=typs).all()
+ query = query & Q(person_type__in=typ)
+ except (ValueError, ObjectDoesNotExist):
+ pass
limit = 15
persons = models.Person.objects.filter(query)[:limit]
data = json.dumps([{'id':person.pk, 'value':unicode(person)}