Restore opensearch hints.
authorRadek Czajka <rczajka@rczajka.pl>
Tue, 10 Nov 2020 14:17:42 +0000 (15:17 +0100)
committerRadek Czajka <rczajka@rczajka.pl>
Tue, 10 Nov 2020 14:17:42 +0000 (15:17 +0100)
src/catalogue/urls.py
src/search/views.py

index 230e1c9..7f1eddb 100644 (file)
@@ -8,6 +8,7 @@ from catalogue.feeds import AudiobookFeed
 from catalogue.models import Book
 from catalogue import views
 import picture.views
+import search.views
 
 
 urlpatterns = [
@@ -36,6 +37,7 @@ urlpatterns = [
     path('lektury/<slug:slug>/', views.collection, name='collection'),
     path('audiobooki/', views.audiobooks, name='audiobook_list'),
     path('daisy/', views.daisy_list, name='daisy_list'),
+    path('jtags/', search.views.hint, {'param': 'q', 'mozhint': True}, name='jhint'),
     path('nowe/', ListView.as_view(
         queryset=Book.objects.filter(parent=None, findable=True).order_by('-created_at'),
         template_name='catalogue/recent_list.html'), name='recent_list'),
index 970734a..da3a767 100644 (file)
@@ -59,8 +59,8 @@ def did_you_mean(query, tokens):
 
 
 @cache.never_cache
-def hint(request):
-    prefix = request.GET.get('term', '')
+def hint(request, mozhint=False, param='term'):
+    prefix = request.GET.get(param, '')
     if len(prefix) < 2:
         return JsonResponse([], safe=False)
 
@@ -94,6 +94,16 @@ def hint(request):
             }
             for b in Book.objects.filter(findable=True, title__iregex='\m' + prefix)[:limit-len(data)]
         ]
+
+    if mozhint:
+        data = [
+            prefix,
+            [
+                item['label']
+                for item in data
+            ]
+        ]
+
     callback = request.GET.get('callback', None)
     if callback:
         return HttpResponse("%s(%s);" % (callback, json.dumps(data)),