mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-06-23 15:30:45 -04:00
/browse: searching works
This commit is contained in:
parent
f7b3f6a442
commit
5d2fa2c5a4
@ -77,7 +77,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div id="search_box">
|
<div id="search_box">
|
||||||
<form name="search_form" action="/browse/search" method="get" accept-charset="UTF-8">
|
<form name="search_form" action="/browse/search" method="get" accept-charset="UTF-8">
|
||||||
<input value="" type="text" title="Search"
|
<input value="{initial_search}" type="text" title="Search" name="query"
|
||||||
class="search_input" />
|
class="search_input" />
|
||||||
<input type="submit" value="Search" title="Search" alt="Search" />
|
<input type="submit" value="Search" title="Search" alt="Search" />
|
||||||
</form>
|
</form>
|
||||||
|
@ -18,7 +18,7 @@ from calibre.utils.filenames import ascii_filename
|
|||||||
from calibre.utils.config import prefs
|
from calibre.utils.config import prefs
|
||||||
from calibre.library.comments import comments_to_html
|
from calibre.library.comments import comments_to_html
|
||||||
|
|
||||||
def render_book_list(ids):
|
def render_book_list(ids): # {{{
|
||||||
pages = []
|
pages = []
|
||||||
num = len(ids)
|
num = len(ids)
|
||||||
pos = 0
|
pos = 0
|
||||||
@ -78,6 +78,8 @@ def render_book_list(ids):
|
|||||||
|
|
||||||
return templ.format(_('Browsing %d books')%num, pages=rpages, navbar=navbar)
|
return templ.format(_('Browsing %d books')%num, pages=rpages, navbar=navbar)
|
||||||
|
|
||||||
|
# }}}
|
||||||
|
|
||||||
def utf8(x): # {{{
|
def utf8(x): # {{{
|
||||||
if isinstance(x, unicode):
|
if isinstance(x, unicode):
|
||||||
x = x.encode('utf-8')
|
x = x.encode('utf-8')
|
||||||
@ -184,10 +186,10 @@ class BrowseServer(object):
|
|||||||
base_href+'/booklist_page',
|
base_href+'/booklist_page',
|
||||||
self.browse_booklist_page)
|
self.browse_booklist_page)
|
||||||
|
|
||||||
connect('browse_search', base_href+'/search/{query}',
|
connect('browse_search', base_href+'/search',
|
||||||
self.browse_search)
|
self.browse_search)
|
||||||
|
|
||||||
def browse_template(self, sort, category=True):
|
def browse_template(self, sort, category=True, initial_search=''):
|
||||||
|
|
||||||
def generate():
|
def generate():
|
||||||
scn = 'calibre_browse_server_sort_'
|
scn = 'calibre_browse_server_sort_'
|
||||||
@ -222,6 +224,7 @@ class BrowseServer(object):
|
|||||||
ans = ans.encode('utf-8')
|
ans = ans.encode('utf-8')
|
||||||
ans = ans.replace('{library_name}', xml(os.path.basename(lp)))
|
ans = ans.replace('{library_name}', xml(os.path.basename(lp)))
|
||||||
ans = ans.replace('{library_path}', xml(lp, True))
|
ans = ans.replace('{library_path}', xml(lp, True))
|
||||||
|
ans = ans.replace('{initial_search}', initial_search)
|
||||||
return ans
|
return ans
|
||||||
|
|
||||||
if self.opts.develop:
|
if self.opts.develop:
|
||||||
@ -495,8 +498,19 @@ class BrowseServer(object):
|
|||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
# Search {{{
|
# Search {{{
|
||||||
def browse_search(self, query=None):
|
@Endpoint(sort_type='list')
|
||||||
raise NotImplementedError()
|
def browse_search(self, query='', list_sort=None):
|
||||||
|
if isbytestring(query):
|
||||||
|
query = query.decode('UTF-8')
|
||||||
|
ids = self.db.search_getting_ids(query.strip(), self.search_restriction)
|
||||||
|
items = [self.db.data._data[x] for x in ids]
|
||||||
|
sort = self.browse_sort_book_list(items, list_sort)
|
||||||
|
ids = [x[0] for x in items]
|
||||||
|
html = render_book_list(ids)
|
||||||
|
return self.browse_template(sort, category=False, initial_search=query).format(
|
||||||
|
title=_('Matching books'),
|
||||||
|
script='booklist();', main=html)
|
||||||
|
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user