From d9f590d29ffb4975a3c4f86dd2ae55cb753a2157 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Wed, 2 Aug 2017 19:29:11 +0200 Subject: Admin - ishtar common: use ajax selects for some fields - clean and simplify --- ishtar_common/lookups.py | 55 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 ishtar_common/lookups.py (limited to 'ishtar_common/lookups.py') diff --git a/ishtar_common/lookups.py b/ishtar_common/lookups.py new file mode 100644 index 000000000..a031af9b3 --- /dev/null +++ b/ishtar_common/lookups.py @@ -0,0 +1,55 @@ +from ajax_select import register, LookupChannel + +from django.db.models import Q +from ishtar_common.models import Person, Organization, IshtarUser + + +@register('organization') +class OrganizationLookup(LookupChannel): + model = Organization + + def get_query(self, q, request): + return self.model.objects.filter( + name__icontains=q).order_by('name')[:20] + + def format_item_display(self, item): + return u"%s" % unicode(item) + + +@register('person') +class PersonLookup(LookupChannel): + model = Person + + def get_query(self, q, request): + query = Q() + for term in q.strip().split(' '): + query &= ( + Q(name__icontains=term) | Q(surname__icontains=term) | + Q(email__icontains=term) | Q(attached_to__name__icontains=term)| + Q(raw_name__icontains=term) + ) + return self.model.objects.filter(query).order_by('name')[:20] + + def format_item_display(self, item): + return u"%s" % unicode(item) + + +@register('ishtaruser') +class UserLookup(LookupChannel): + model = IshtarUser + + def get_query(self, q, request): + query = Q() + for term in q.strip().split(' '): + query &= ( + Q(user_ptr__username__icontains=term) | + Q(person__name__icontains=term) | + Q(person__surname__icontains=term) | + Q(person__email__icontains=term) | + Q(person__attached_to__name__icontains=term)| + Q(person__raw_name__icontains=term) + ) + return self.model.objects.filter(query).order_by('person__name')[:20] + + def format_item_display(self, item): + return u"%s" % unicode(item.person) -- cgit v1.2.3