]> gitweb.fperrin.net Git - djsite.git/blob - quotes/lookups.py
Use django-ajax-selects for selecting tags and works
[djsite.git] / quotes / lookups.py
1 from django.db.models import Q
2
3 from ajax_select import register, LookupChannel
4 from .models import Work, Author, QuoteTag, AuthorTag, WorkTag
5
6 @register('work')
7 class WorkLookup(LookupChannel):
8     model = Work
9
10     def get_query(self, q, request):
11         return self.model.objects.filter(
12             Q(name__icontains=q) | Q(author__name__icontains=q)
13         ).order_by('name')[:10]
14
15     def format_item_display(self, item):
16         return str(item)
17
18 @register('author')
19 class AuthorLookup(LookupChannel):
20     model = Author
21
22     def get_query(self, q, request):
23         return self.model.objects.filter(
24             name__icontains=q
25         ).order_by('name')[:10]
26
27     def format_item_display(self, item):
28         return str(item)
29
30 def taglookup(tagclass):
31     @register(tagclass.__name__)
32     class Lookup(LookupChannel):
33         model = tagclass
34
35         def get_query(self, q, request):
36             return self.model.objects.filter(
37                 tag__icontains=q
38             ).order_by('tag')[:10]
39
40         def format_item_display(self, item):
41             return str(item)
42
43 taglookup(QuoteTag)
44 taglookup(WorkTag)
45 taglookup(AuthorTag)