]> gitweb.fperrin.net Git - djsite.git/blobdiff - quotes/lookups.py
Use django-ajax-selects for selecting tags and works
[djsite.git] / quotes / lookups.py
diff --git a/quotes/lookups.py b/quotes/lookups.py
new file mode 100644 (file)
index 0000000..0435b11
--- /dev/null
@@ -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)