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
d33b0587
Commit
d33b0587
authored
Dec 28, 2020
by
Ozzieisaacs
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Advanced search tags are now multiselects (#1240)
parent
7e0ed537
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
27 additions
and
17 deletions
+27
-17
edit_books.js
cps/static/js/edit_books.js
+13
-5
search_form.html
cps/templates/search_form.html
+10
-10
web.py
cps/web.py
+4
-2
No files found.
cps/static/js/edit_books.js
View file @
d33b0587
...
@@ -249,18 +249,26 @@ promisePublishers.done(function() {
...
@@ -249,18 +249,26 @@ promisePublishers.done(function() {
);
);
});
});
$
(
"#search"
).
on
(
"change input.typeahead:selected"
,
function
()
{
$
(
"#search"
).
on
(
"change input.typeahead:selected"
,
function
(
event
)
{
if
(
event
.
target
.
type
==
"search"
&&
event
.
target
.
tagName
==
"INPUT"
)
{
return
;
}
var
form
=
$
(
"form"
).
serialize
();
var
form
=
$
(
"form"
).
serialize
();
$
.
getJSON
(
getPath
()
+
"/get_matching_tags"
,
form
,
function
(
data
)
{
$
.
getJSON
(
getPath
()
+
"/get_matching_tags"
,
form
,
function
(
data
)
{
$
(
".tags_click"
).
each
(
function
()
{
$
(
".tags_click"
).
each
(
function
()
{
if
(
$
.
inArray
(
parseInt
(
$
(
this
).
children
(
"input"
).
first
().
val
(),
10
),
data
.
tags
)
===
-
1
)
{
if
(
$
.
inArray
(
parseInt
(
$
(
this
).
val
(),
10
),
data
.
tags
)
===
-
1
)
{
if
(
!
(
$
(
this
).
hasClass
(
"active"
)
))
{
if
(
!
$
(
this
).
prop
(
"selected"
))
{
$
(
this
).
addClass
(
"disabled"
);
$
(
this
).
prop
(
"disabled"
,
true
);
}
}
}
else
{
}
else
{
$
(
this
).
removeClass
(
"disabled"
);
$
(
this
).
prop
(
"disabled"
,
false
);
}
}
});
});
$
(
"#include_tag option:selected"
).
each
(
function
()
{
$
(
"#exclude_tag"
).
find
(
"[value="
+
$
(
this
).
val
()
+
"]"
).
prop
(
"disabled"
,
true
);
});
$
(
'#include_tag'
).
selectpicker
(
"refresh"
);
$
(
'#exclude_tag'
).
selectpicker
(
"refresh"
);
});
});
});
});
...
...
cps/templates/search_form.html
View file @
d33b0587
...
@@ -42,17 +42,17 @@
...
@@ -42,17 +42,17 @@
<div
class=
"row"
>
<div
class=
"row"
>
<div
class=
"form-group col-sm-6"
id=
"tag"
>
<div
class=
"form-group col-sm-6"
id=
"tag"
>
<div><label
for=
"include_tag"
>
{{_('Tags')}}
</label></div>
<div><label
for=
"include_tag"
>
{{_('Tags')}}
</label></div>
<select
class=
"selectpicker"
data-live-search=
"true"
data-style=
"btn-primary"
multiple
>
<select
class=
"selectpicker"
name=
"include_tag"
id=
"include_tag"
data-live-search=
"true"
data-style=
"btn-primary"
multiple
>
{% for tag in tags %}
{% for tag in tags %}
<option
value=
"{{tag.id}}"
>
{{tag.name}}
</option>
<option
class=
"tags_click"
value=
"{{tag.id}}"
>
{{tag.name}}
</option>
{% endfor %}
{% endfor %}
</select>
</select>
</div>
</div>
<div
class=
"form-group col-sm-6"
>
<div
class=
"form-group col-sm-6"
>
<div><label
for=
"exclude_tag"
>
{{_('Exclude Tags')}}
</label></div>
<div><label
for=
"exclude_tag"
>
{{_('Exclude Tags')}}
</label></div>
<select
class=
"selectpicker"
data-live-search=
"true"
data-style=
"btn-danger"
multiple
>
<select
class=
"selectpicker"
name=
"exclude_tag"
id=
"exclude_tag"
data-live-search=
"true"
data-style=
"btn-danger"
multiple
>
{% for tag in tags %}
{% for tag in tags %}
<option
value=
"{{tag.id}}"
>
{{tag.name}}
</option>
<option
class=
"tags_click"
value=
"{{tag.id}}"
>
{{tag.name}}
</option>
{% endfor %}
{% endfor %}
</select>
</select>
</div>
</div>
...
@@ -60,7 +60,7 @@
...
@@ -60,7 +60,7 @@
<div
class=
"row"
>
<div
class=
"row"
>
<div
class=
"form-group col-sm-6"
>
<div
class=
"form-group col-sm-6"
>
<div><label
for=
"include_serie"
>
{{_('Series')}}
</label></div>
<div><label
for=
"include_serie"
>
{{_('Series')}}
</label></div>
<select
class=
"selectpicker"
data-live-search=
"true"
data-style=
"btn-primary"
multiple
>
<select
class=
"selectpicker"
name=
"include_serie"
id=
"include_serie"
data-live-search=
"true"
data-style=
"btn-primary"
multiple
>
{% for serie in series %}
{% for serie in series %}
<option
value=
"{{serie.id}}"
>
{{serie.name}}
</option>
<option
value=
"{{serie.id}}"
>
{{serie.name}}
</option>
{% endfor %}
{% endfor %}
...
@@ -68,7 +68,7 @@
...
@@ -68,7 +68,7 @@
</div>
</div>
<div
class=
"form-group col-sm-6"
>
<div
class=
"form-group col-sm-6"
>
<div><label
for=
"exclude_serie"
>
{{_('Exclude Series')}}
</label></div>
<div><label
for=
"exclude_serie"
>
{{_('Exclude Series')}}
</label></div>
<select
class=
"selectpicker"
data-live-search=
"true"
data-style=
"btn-danger"
multiple
>
<select
class=
"selectpicker"
name=
"exclude_serie"
id=
"exclude_serie"
data-live-search=
"true"
data-style=
"btn-danger"
multiple
>
{% for serie in series %}
{% for serie in series %}
<option
value=
"{{serie.id}}"
>
{{serie.name}}
</option>
<option
value=
"{{serie.id}}"
>
{{serie.name}}
</option>
{% endfor %}
{% endfor %}
...
@@ -79,7 +79,7 @@
...
@@ -79,7 +79,7 @@
<div
class=
"row"
>
<div
class=
"row"
>
<div
class=
"form-group col-sm-6"
>
<div
class=
"form-group col-sm-6"
>
<div><label
for=
"include_language"
>
{{_('Languages')}}
</label></div>
<div><label
for=
"include_language"
>
{{_('Languages')}}
</label></div>
<select
class=
"selectpicker"
data-live-search=
"true"
data-style=
"btn-primary"
multiple
>
<select
class=
"selectpicker"
name=
"include_language"
id=
"include_language"
data-live-search=
"true"
data-style=
"btn-primary"
multiple
>
{% for language in languages %}
{% for language in languages %}
<option
value=
"{{language.id}}"
>
{{language.name}}
</option>
<option
value=
"{{language.id}}"
>
{{language.name}}
</option>
{% endfor %}
{% endfor %}
...
@@ -87,7 +87,7 @@
...
@@ -87,7 +87,7 @@
</div>
</div>
<div
class=
"form-group col-sm-6"
>
<div
class=
"form-group col-sm-6"
>
<div><label
for=
"exclude_language"
>
{{_('Exclude Languages')}}
</label></div>
<div><label
for=
"exclude_language"
>
{{_('Exclude Languages')}}
</label></div>
<select
class=
"selectpicker"
data-live-search=
"true"
data-style=
"btn-danger"
multiple
>
<select
class=
"selectpicker"
name=
"exclude_language"
id=
"exclude_language"
data-live-search=
"true"
data-style=
"btn-danger"
multiple
>
{% for language in languages %}
{% for language in languages %}
<option
value=
"{{language.id}}"
>
{{language.name}}
</option>
<option
value=
"{{language.id}}"
>
{{language.name}}
</option>
{% endfor %}
{% endfor %}
...
@@ -98,7 +98,7 @@
...
@@ -98,7 +98,7 @@
<div
class=
"row"
>
<div
class=
"row"
>
<div
class=
"form-group col-sm-6"
>
<div
class=
"form-group col-sm-6"
>
<div><label
for=
"include_extension"
>
{{_('Extensions')}}
</label></div>
<div><label
for=
"include_extension"
>
{{_('Extensions')}}
</label></div>
<select
id=
"include_extension"
class=
"selectpicker"
data-live-search=
"true"
data-style=
"btn-primary"
multiple
>
<select
id=
"include_extension"
class=
"selectpicker"
name=
"include_extension"
id=
"include_extension"
data-live-search=
"true"
data-style=
"btn-primary"
multiple
>
{% for extension in extensions %}
{% for extension in extensions %}
<option
value=
"{{extension.format}}"
>
{{extension.format}}
</option>
<option
value=
"{{extension.format}}"
>
{{extension.format}}
</option>
{% endfor %}
{% endfor %}
...
@@ -106,7 +106,7 @@
...
@@ -106,7 +106,7 @@
</div>
</div>
<div
class=
"form-group col-sm-6"
>
<div
class=
"form-group col-sm-6"
>
<div><label
for=
"exclude_extension"
>
{{_('Exclude Extensions')}}
</label></div>
<div><label
for=
"exclude_extension"
>
{{_('Exclude Extensions')}}
</label></div>
<select
id=
"exclude_extension"
class=
"selectpicker"
data-live-search=
"true"
data-style=
"btn-danger"
multiple
>
<select
id=
"exclude_extension"
class=
"selectpicker"
name=
"exclude_extension"
id=
"exclude_extension"
data-live-search=
"true"
data-style=
"btn-danger"
multiple
>
{% for extension in extensions %}
{% for extension in extensions %}
<option
value=
"{{extension.format}}"
>
{{extension.format}}
</option>
<option
value=
"{{extension.format}}"
>
{{extension.format}}
</option>
{% endfor %}
{% endfor %}
...
...
cps/web.py
View file @
d33b0587
...
@@ -335,8 +335,6 @@ def get_matching_tags():
...
@@ -335,8 +335,6 @@ def get_matching_tags():
title_input
=
request
.
args
.
get
(
'book_title'
)
or
''
title_input
=
request
.
args
.
get
(
'book_title'
)
or
''
include_tag_inputs
=
request
.
args
.
getlist
(
'include_tag'
)
or
''
include_tag_inputs
=
request
.
args
.
getlist
(
'include_tag'
)
or
''
exclude_tag_inputs
=
request
.
args
.
getlist
(
'exclude_tag'
)
or
''
exclude_tag_inputs
=
request
.
args
.
getlist
(
'exclude_tag'
)
or
''
# include_extension_inputs = request.args.getlist('include_extension') or ''
# exclude_extension_inputs = request.args.getlist('exclude_extension') or ''
q
=
q
.
filter
(
db
.
Books
.
authors
.
any
(
func
.
lower
(
db
.
Authors
.
name
)
.
ilike
(
"
%
"
+
author_input
+
"
%
"
)),
q
=
q
.
filter
(
db
.
Books
.
authors
.
any
(
func
.
lower
(
db
.
Authors
.
name
)
.
ilike
(
"
%
"
+
author_input
+
"
%
"
)),
func
.
lower
(
db
.
Books
.
title
)
.
ilike
(
"
%
"
+
title_input
+
"
%
"
))
func
.
lower
(
db
.
Books
.
title
)
.
ilike
(
"
%
"
+
title_input
+
"
%
"
))
if
len
(
include_tag_inputs
)
>
0
:
if
len
(
include_tag_inputs
)
>
0
:
...
@@ -1067,8 +1065,12 @@ def render_adv_search_results(term, offset=None, order=None, limit=None):
...
@@ -1067,8 +1065,12 @@ def render_adv_search_results(term, offset=None, order=None, limit=None):
pub_start
=
u""
pub_start
=
u""
tag_names
=
calibre_db
.
session
.
query
(
db
.
Tags
)
.
filter
(
db
.
Tags
.
id
.
in_
(
include_tag_inputs
))
.
all
()
tag_names
=
calibre_db
.
session
.
query
(
db
.
Tags
)
.
filter
(
db
.
Tags
.
id
.
in_
(
include_tag_inputs
))
.
all
()
searchterm
.
extend
(
tag
.
name
for
tag
in
tag_names
)
searchterm
.
extend
(
tag
.
name
for
tag
in
tag_names
)
tag_names
=
calibre_db
.
session
.
query
(
db
.
Tags
)
.
filter
(
db
.
Tags
.
id
.
in_
(
exclude_tag_inputs
))
.
all
()
searchterm
.
extend
(
tag
.
name
for
tag
in
tag_names
)
serie_names
=
calibre_db
.
session
.
query
(
db
.
Series
)
.
filter
(
db
.
Series
.
id
.
in_
(
include_series_inputs
))
.
all
()
serie_names
=
calibre_db
.
session
.
query
(
db
.
Series
)
.
filter
(
db
.
Series
.
id
.
in_
(
include_series_inputs
))
.
all
()
searchterm
.
extend
(
serie
.
name
for
serie
in
serie_names
)
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
)
language_names
=
calibre_db
.
session
.
query
(
db
.
Languages
)
.
\
language_names
=
calibre_db
.
session
.
query
(
db
.
Languages
)
.
\
filter
(
db
.
Languages
.
id
.
in_
(
include_languages_inputs
))
.
all
()
filter
(
db
.
Languages
.
id
.
in_
(
include_languages_inputs
))
.
all
()
if
language_names
:
if
language_names
:
...
...
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