diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-02-04 10:24:48 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-04-24 19:38:56 +0200 |
commit | aec0e1a20f4f57c6977f45932a178c2011d3d70c (patch) | |
tree | a4a8a08bb96c94c197894af7891226d457008f52 /ishtar_common/lookups.py | |
parent | b42ffbab9b1c204765368d920c851e2a254c8fa5 (diff) | |
download | Ishtar-aec0e1a20f4f57c6977f45932a178c2011d3d70c.tar.bz2 Ishtar-aec0e1a20f4f57c6977f45932a178c2011d3d70c.zip |
Admin find: add dynamic fields
Diffstat (limited to 'ishtar_common/lookups.py')
-rw-r--r-- | ishtar_common/lookups.py | 48 |
1 files changed, 26 insertions, 22 deletions
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"<span class='ajax-label'>%s</span>" % 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"<span class='ajax-label'>%s</span>" % 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"<span class='ajax-label'>%s</span>" % 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"<span class='ajax-label'>%s</span>" % 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"<span class='ajax-label'>%s</span>" % 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"<span class='ajax-label'>%s</span>" % 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] |