X-Git-Url: http://gitweb.fperrin.net/?a=blobdiff_plain;f=quotes%2Flookups.py;fp=quotes%2Flookups.py;h=0435b11c6a264e3b20cbdb0c5be805da5eeaa9fc;hb=d068f1e415467bfb8e45180357f01701b56a9351;hp=0000000000000000000000000000000000000000;hpb=9f9dde2bb0855b915b478985ba6ab4fb14b36d14;p=djsite.git diff --git a/quotes/lookups.py b/quotes/lookups.py new file mode 100644 index 0000000..0435b11 --- /dev/null +++ b/quotes/lookups.py @@ -0,0 +1,45 @@ +from django.db.models import Q + +from ajax_select import register, LookupChannel +from .models import Work, Author, QuoteTag, AuthorTag, WorkTag + +@register('work') +class WorkLookup(LookupChannel): + model = Work + + def get_query(self, q, request): + return self.model.objects.filter( + Q(name__icontains=q) | Q(author__name__icontains=q) + ).order_by('name')[:10] + + def format_item_display(self, item): + return str(item) + +@register('author') +class AuthorLookup(LookupChannel): + model = Author + + def get_query(self, q, request): + return self.model.objects.filter( + name__icontains=q + ).order_by('name')[:10] + + def format_item_display(self, item): + return str(item) + +def taglookup(tagclass): + @register(tagclass.__name__) + class Lookup(LookupChannel): + model = tagclass + + def get_query(self, q, request): + return self.model.objects.filter( + tag__icontains=q + ).order_by('tag')[:10] + + def format_item_display(self, item): + return str(item) + +taglookup(QuoteTag) +taglookup(WorkTag) +taglookup(AuthorTag)