From 7d987d9729dd8e116d9bc04cf034054e2b685960 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Mon, 4 Feb 2019 10:24:48 +0100 Subject: Admin find: add dynamic fields --- ishtar_common/lookups.py | 48 ++++++++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 22 deletions(-) (limited to 'ishtar_common/lookups.py') diff --git a/ishtar_common/lookups.py b/ishtar_common/lookups.py index 181fc97a1..1d566d1db 100644 --- a/ishtar_common/lookups.py +++ b/ishtar_common/lookups.py @@ -2,8 +2,7 @@ from ajax_select import register, LookupChannel as BaseLookupChannel from django.conf import settings from django.db.models import Q -from ishtar_common.models import Area, Person, Organization, IshtarUser, Town, \ - Author +from ishtar_common import models class LookupChannel(BaseLookupChannel): @@ -17,10 +16,19 @@ class LookupChannel(BaseLookupChannel): ids.append(item) return super(LookupChannel, self).get_objects(ids) + def format_item_display(self, item): + return u"%s" % unicode(item) + + +class TypeLookupChannel(LookupChannel): + def get_query(self, q, request): + query = Q(label__icontains=q) | Q(label__icontains=q) + return self.model.objects.filter(query).order_by('label')[:20] + @register('town') class TownLookup(LookupChannel): - model = Town + model = models.Town def get_query(self, q, request): if settings.COUNTRY == 'fr': @@ -33,25 +41,19 @@ class TownLookup(LookupChannel): query = Q(name__icontains=q) return self.model.objects.filter(query).order_by('name')[:20] - def format_item_display(self, item): - return u"%s" % unicode(item) - @register('organization') class OrganizationLookup(LookupChannel): - model = Organization + model = models.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 + model = models.Person def get_query(self, q, request): query = Q() @@ -63,13 +65,10 @@ class PersonLookup(LookupChannel): ) return self.model.objects.filter(query).order_by('name')[:20] - def format_item_display(self, item): - return u"%s" % unicode(item) - @register('author') class AuthorLookup(LookupChannel): - model = Author + model = models.Author def get_query(self, q, request): query = Q() @@ -83,13 +82,10 @@ class AuthorLookup(LookupChannel): ) return self.model.objects.filter(query).order_by('person__name')[:20] - def format_item_display(self, item): - return u"%s" % unicode(item) - @register('ishtaruser') class UserLookup(LookupChannel): - model = IshtarUser + model = models.IshtarUser def get_query(self, q, request): query = Q() @@ -110,11 +106,19 @@ class UserLookup(LookupChannel): @register('area') class AreaLookup(LookupChannel): - model = Area + model = models.Area def get_query(self, q, request): query = Q(label__icontains=q) return self.model.objects.filter(query).order_by('label')[:20] - def format_item_display(self, item): - return u"%s" % unicode(item) + +@register('document') +class DocumentLookup(LookupChannel): + model = models.Document + + def get_query(self, q, request): + query = Q(title__icontains=q) | Q(reference__icontains=q) | Q( + internal_reference__icontains=q + ) + return self.model.objects.filter(query).order_by('title')[:20] -- cgit v1.2.3