Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
D
douban-api-proxy
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
captainwong
douban-api-proxy
Commits
68894566
Commit
68894566
authored
Mar 20, 2021
by
Ozzie Isaacs
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'adv_search/master' into master
parents
2760a781
f5ded86c
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
149 additions
and
76 deletions
+149
-76
caliBlur.js
cps/static/js/caliBlur.js
+33
-0
search_form.html
cps/templates/search_form.html
+92
-73
web.py
cps/web.py
+24
-3
No files found.
cps/static/js/caliBlur.js
View file @
68894566
...
...
@@ -403,6 +403,39 @@ $("div.comments").readmore({
// End of Global Work //
///////////////////////////////
// Advanced Search Results
if
(
$
(
"body.advsearch"
).
length
>
0
)
{
$
(
"#loader + .container-fluid"
)
.
prepend
(
"<div class='blur-wrapper'></div>"
);
$
(
"#add-to-shelves"
).
insertBefore
(
".blur-wrapper"
);
$
(
'div[aria-label="Add to shelves"]'
).
click
(
function
()
{
$
(
"#add-to-shelves"
).
toggle
();
});
$
(
'#add-to-shelf'
).
height
(
"40px"
);
function
dropdownToggle
()
{
topPos
=
$
(
"#add-to-shelf"
).
offset
().
top
-
20
;
if
(
$
(
'div[aria-label="Add to shelves"]'
).
length
>
0
)
{
position
=
$
(
'div[aria-label="Add to shelves"]'
).
offset
().
left
if
(
position
+
$
(
"#add-to-shelves"
).
width
()
>
$
(
window
).
width
())
{
positionOff
=
position
+
$
(
"#add-to-shelves"
).
width
()
-
$
(
window
).
width
();
adsPosition
=
position
-
positionOff
-
5
$
(
"#add-to-shelves"
).
attr
(
"style"
,
"left: "
+
adsPosition
+
"px !important; right: auto; top: "
+
topPos
+
"px"
);
}
else
{
$
(
"#add-to-shelves"
).
attr
(
"style"
,
"left: "
+
position
+
"px !important; right: auto; top: "
+
topPos
+
"px"
);
}
}
}
dropdownToggle
();
$
(
window
).
on
(
"resize"
,
function
()
{
dropdownToggle
();
});
}
// Author Page Background Blur
if
(
$
(
"body.author"
).
length
>
0
)
{
cover
=
$
(
".author-bio img"
).
attr
(
"src"
);
...
...
cps/templates/search_form.html
View file @
68894566
This diff is collapsed.
Click to expand it.
cps/web.py
View file @
68894566
...
...
@@ -37,7 +37,7 @@ from flask import session as flask_session
from
flask_babel
import
gettext
as
_
from
flask_login
import
login_user
,
logout_user
,
login_required
,
current_user
from
sqlalchemy.exc
import
IntegrityError
,
InvalidRequestError
,
OperationalError
from
sqlalchemy.sql.expression
import
text
,
func
,
false
,
not_
,
and_
from
sqlalchemy.sql.expression
import
text
,
func
,
false
,
not_
,
and_
,
or_
from
sqlalchemy.orm.attributes
import
flag_modified
from
sqlalchemy.sql.functions
import
coalesce
...
...
@@ -687,6 +687,9 @@ def render_prepare_search_form(cc):
.
group_by
(
text
(
'books_series_link.series'
))
\
.
order_by
(
db
.
Series
.
name
)
\
.
filter
(
calibre_db
.
common_filters
())
.
all
()
shelves
=
ub
.
session
.
query
(
ub
.
Shelf
)
\
.
filter
(
or_
(
ub
.
Shelf
.
is_public
==
1
,
ub
.
Shelf
.
user_id
==
int
(
current_user
.
id
)))
\
.
order_by
(
ub
.
Shelf
.
name
)
.
all
()
extensions
=
calibre_db
.
session
.
query
(
db
.
Data
)
\
.
join
(
db
.
Books
)
\
.
filter
(
calibre_db
.
common_filters
())
\
...
...
@@ -697,7 +700,7 @@ def render_prepare_search_form(cc):
else
:
languages
=
None
return
render_title_template
(
'search_form.html'
,
tags
=
tags
,
languages
=
languages
,
extensions
=
extensions
,
series
=
series
,
title
=
_
(
u"Advanced Search"
),
cc
=
cc
,
page
=
"advsearch"
)
series
=
series
,
shelves
=
shelves
,
title
=
_
(
u"Advanced Search"
),
cc
=
cc
,
page
=
"advsearch"
)
def
render_search_results
(
term
,
offset
=
None
,
order
=
None
,
limit
=
None
):
...
...
@@ -989,7 +992,7 @@ def search():
@
login_required_if_no_ano
def
advanced_search
():
values
=
dict
(
request
.
form
)
params
=
[
'include_tag'
,
'exclude_tag'
,
'include_serie'
,
'exclude_serie'
,
'include_language'
,
params
=
[
'include_tag'
,
'exclude_tag'
,
'include_serie'
,
'exclude_serie'
,
'include_
shelf'
,
'exclude_shelf'
,
'include_
language'
,
'exclude_language'
,
'include_extension'
,
'exclude_extension'
]
for
param
in
params
:
values
[
param
]
=
list
(
request
.
form
.
getlist
(
param
))
...
...
@@ -1081,6 +1084,12 @@ def adv_search_serie(q, include_series_inputs, exclude_series_inputs):
q
=
q
.
filter
(
not_
(
db
.
Books
.
series
.
any
(
db
.
Series
.
id
==
serie
)))
return
q
def
adv_search_shelf
(
q
,
include_shelf_inputs
,
exclude_shelf_inputs
):
q
=
q
.
outerjoin
(
ub
.
BookShelf
,
db
.
Books
.
id
==
ub
.
BookShelf
.
book_id
)
\
.
filter
(
or_
(
ub
.
BookShelf
.
shelf
==
None
,
ub
.
BookShelf
.
shelf
.
notin_
(
exclude_shelf_inputs
)))
if
len
(
include_shelf_inputs
)
>
0
:
q
=
q
.
filter
(
ub
.
BookShelf
.
shelf
.
in_
(
include_shelf_inputs
))
return
q
def
extend_search_term
(
searchterm
,
author_name
,
...
...
@@ -1092,6 +1101,8 @@ def extend_search_term(searchterm,
exclude_tag_inputs
,
include_series_inputs
,
exclude_series_inputs
,
include_shelf_inputs
,
exclude_shelf_inputs
,
include_languages_inputs
,
rating_high
,
rating_low
,
...
...
@@ -1122,6 +1133,10 @@ def extend_search_term(searchterm,
searchterm
.
extend
(
serie
.
name
for
serie
in
serie_names
)
serie_names
=
calibre_db
.
session
.
query
(
db
.
Series
)
.
filter
(
db
.
Series
.
id
.
in_
(
exclude_series_inputs
))
.
all
()
searchterm
.
extend
(
serie
.
name
for
serie
in
serie_names
)
shelf_names
=
ub
.
session
.
query
(
ub
.
Shelf
)
.
filter
(
ub
.
Shelf
.
id
.
in_
(
include_shelf_inputs
))
.
all
()
searchterm
.
extend
(
shelf
.
name
for
shelf
in
shelf_names
)
shelf_names
=
ub
.
session
.
query
(
ub
.
Shelf
)
.
filter
(
ub
.
Shelf
.
id
.
in_
(
exclude_shelf_inputs
))
.
all
()
searchterm
.
extend
(
shelf
.
name
for
shelf
in
shelf_names
)
language_names
=
calibre_db
.
session
.
query
(
db
.
Languages
)
.
\
filter
(
db
.
Languages
.
id
.
in_
(
include_languages_inputs
))
.
all
()
if
language_names
:
...
...
@@ -1152,6 +1167,8 @@ def render_adv_search_results(term, offset=None, order=None, limit=None):
exclude_tag_inputs
=
term
.
get
(
'exclude_tag'
)
include_series_inputs
=
term
.
get
(
'include_serie'
)
exclude_series_inputs
=
term
.
get
(
'exclude_serie'
)
include_shelf_inputs
=
term
.
get
(
'include_shelf'
)
exclude_shelf_inputs
=
term
.
get
(
'exclude_shelf'
)
include_languages_inputs
=
term
.
get
(
'include_language'
)
exclude_languages_inputs
=
term
.
get
(
'exclude_language'
)
include_extension_inputs
=
term
.
get
(
'include_extension'
)
...
...
@@ -1181,6 +1198,7 @@ def render_adv_search_results(term, offset=None, order=None, limit=None):
cc_present
=
True
if
include_tag_inputs
or
exclude_tag_inputs
or
include_series_inputs
or
exclude_series_inputs
or
\
include_shelf_inputs
or
exclude_shelf_inputs
or
\
include_languages_inputs
or
exclude_languages_inputs
or
author_name
or
book_title
or
\
publisher
or
pub_start
or
pub_end
or
rating_low
or
rating_high
or
description
or
cc_present
or
\
include_extension_inputs
or
exclude_extension_inputs
or
read_status
:
...
...
@@ -1194,6 +1212,8 @@ def render_adv_search_results(term, offset=None, order=None, limit=None):
exclude_tag_inputs
,
include_series_inputs
,
exclude_series_inputs
,
include_shelf_inputs
,
exclude_shelf_inputs
,
include_languages_inputs
,
rating_high
,
rating_low
,
...
...
@@ -1214,6 +1234,7 @@ def render_adv_search_results(term, offset=None, order=None, limit=None):
q
=
q
.
filter
(
db
.
Books
.
publishers
.
any
(
func
.
lower
(
db
.
Publishers
.
name
)
.
ilike
(
"
%
"
+
publisher
+
"
%
"
)))
q
=
adv_search_tag
(
q
,
include_tag_inputs
,
exclude_tag_inputs
)
q
=
adv_search_serie
(
q
,
include_series_inputs
,
exclude_series_inputs
)
q
=
adv_search_shelf
(
q
,
include_shelf_inputs
,
exclude_shelf_inputs
)
q
=
adv_search_extension
(
q
,
include_extension_inputs
,
exclude_extension_inputs
)
q
=
adv_search_language
(
q
,
include_languages_inputs
,
exclude_languages_inputs
)
q
=
adv_search_ratings
(
q
,
rating_high
,
rating_low
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment