diff options
Diffstat (limited to 'ishtar/furnitures/views.py')
-rw-r--r-- | ishtar/furnitures/views.py | 10 |
1 files changed, 9 insertions, 1 deletions
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)} |