From ed928e4237e83ca266106b12ec5a5dc52fab4c3a Mon Sep 17 00:00:00 2001 From: Mike Young Date: Wed, 4 Dec 2019 23:08:20 -0500 Subject: [PATCH] Started on search functions --- src/frontend/urls.py | 1 + src/interface/models.py | 7 +++++++ src/interface/views.py | 12 ++++++++++++ 3 files changed, 20 insertions(+) diff --git a/src/frontend/urls.py b/src/frontend/urls.py index 4d47ec2..d241245 100755 --- a/src/frontend/urls.py +++ b/src/frontend/urls.py @@ -24,6 +24,7 @@ urlpatterns = [ path("download/", views.download, name="download"), path("prev_page/", views.prev_page, name="prev_page"), path("next_page/", views.next_page, name="next_page"), + path("search/", views.search, name="search"), ] if settings.DEBUG: import debug_toolbar diff --git a/src/interface/models.py b/src/interface/models.py index b2f5951..3e58a4b 100755 --- a/src/interface/models.py +++ b/src/interface/models.py @@ -1,3 +1,4 @@ +from django.contrib.postgres.search import SearchVector from django.db import models # Create your models here. @@ -32,3 +33,9 @@ class Books(models.Model): def get_absolute_url(self): """Returns the url to access a particular instance of MyModelName.""" return reverse("model-detail-view", args=[str(self.id)]) + + def generic_search(self, query): + results = Books.objects.annotate( + search=SearchVector("author", "title", "file_name") + ).filter(str(query)) + return results diff --git a/src/interface/views.py b/src/interface/views.py index b5430a8..5683b03 100755 --- a/src/interface/views.py +++ b/src/interface/views.py @@ -41,6 +41,18 @@ def prev_page(request, bookset): ) +def search(request, query=None): + breakpoint() + if query == None: + return False + else: + try: + _r = Books().generic_search(query) + return _r + except Exception as e: + return e + + def book_set(_limit=None, _set=1): if _limit is None: _limit = 20 # TODO default from user choice