mirror of
https://github.com/th3r00t/pyShelf.git
synced 2026-04-28 01:59:35 -04:00
Added search function, and result paging
This commit is contained in:
@@ -11,6 +11,9 @@ from .models import Books
|
|||||||
|
|
||||||
|
|
||||||
def index(request):
|
def index(request):
|
||||||
|
"""
|
||||||
|
Return template index
|
||||||
|
"""
|
||||||
_set = 1
|
_set = 1
|
||||||
return render(
|
return render(
|
||||||
request, "index.html", {"Books": book_set(20, _set), "Set": str(_set)}
|
request, "index.html", {"Books": book_set(20, _set), "Set": str(_set)}
|
||||||
@@ -18,6 +21,9 @@ def index(request):
|
|||||||
|
|
||||||
|
|
||||||
def next_page(request, bookset):
|
def next_page(request, bookset):
|
||||||
|
"""
|
||||||
|
Goto next page in bookset
|
||||||
|
"""
|
||||||
try:
|
try:
|
||||||
_set = int(bookset) + 1
|
_set = int(bookset) + 1
|
||||||
except Exception:
|
except Exception:
|
||||||
@@ -28,6 +34,9 @@ def next_page(request, bookset):
|
|||||||
|
|
||||||
|
|
||||||
def prev_page(request, bookset):
|
def prev_page(request, bookset):
|
||||||
|
"""
|
||||||
|
Goto previous page in bookset
|
||||||
|
"""
|
||||||
_set = int(bookset)
|
_set = int(bookset)
|
||||||
if _set <= 1:
|
if _set <= 1:
|
||||||
_set = 1
|
_set = 1
|
||||||
@@ -41,14 +50,33 @@ def prev_page(request, bookset):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def search(request, query=None):
|
def search(request, query=None, _set=1, _limit=None):
|
||||||
|
"""
|
||||||
|
Call generic search and return rendered results
|
||||||
|
"""
|
||||||
|
_set = int(_set)
|
||||||
if query is None:
|
if query is None:
|
||||||
return render(request, "index.html", {"Books": None})
|
return render(request, "index.html", {"Books": None})
|
||||||
_r = Books().generic_search(query)
|
if _limit is None:
|
||||||
return render(request, "index.html", {"Books": _r})
|
_limit = 20 ## TODO set to user defaults
|
||||||
|
if _set < 1:
|
||||||
|
_set = 1
|
||||||
|
_set_max = int(_set) * _limit
|
||||||
|
_set_min = _set_max - _limit
|
||||||
|
search = Books().generic_search(query)
|
||||||
|
search_len = search.count()
|
||||||
|
_r = search[_set_min:_set_max]
|
||||||
|
return render(
|
||||||
|
request,
|
||||||
|
"search.html",
|
||||||
|
{"Books": _r, "Query": query, "Set": _set, "len_results": search_len},
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def book_set(_limit=None, _set=1):
|
def book_set(_limit=None, _set=1):
|
||||||
|
"""
|
||||||
|
Get books results by set #
|
||||||
|
"""
|
||||||
if _limit is None:
|
if _limit is None:
|
||||||
_limit = 20 # TODO default from user choice
|
_limit = 20 # TODO default from user choice
|
||||||
_set_max = int(_set) * _limit
|
_set_max = int(_set) * _limit
|
||||||
@@ -79,6 +107,9 @@ def book_set_as_dict(_limit=None, _set=1):
|
|||||||
|
|
||||||
|
|
||||||
def download(request, pk):
|
def download(request, pk):
|
||||||
|
"""
|
||||||
|
Download book by primary key
|
||||||
|
"""
|
||||||
_book = Books.objects.all().filter(pk=pk)[0]
|
_book = Books.objects.all().filter(pk=pk)[0]
|
||||||
_fn = hr_name(_book)
|
_fn = hr_name(_book)
|
||||||
response = HttpResponse(
|
response = HttpResponse(
|
||||||
@@ -89,4 +120,7 @@ def download(request, pk):
|
|||||||
|
|
||||||
|
|
||||||
def hr_name(book):
|
def hr_name(book):
|
||||||
|
"""
|
||||||
|
Nicer file names
|
||||||
|
"""
|
||||||
return "{0}.{1}".format(slugify(book.title), book.file_name.split(".")[1])
|
return "{0}.{1}".format(slugify(book.title), book.file_name.split(".")[1])
|
||||||
|
|||||||
Reference in New Issue
Block a user