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
8612dce9
Commit
8612dce9
authored
Mar 09, 2019
by
Ozzieisaacs
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'author/shorten-authors'
parents
0b0e62fd
bd7b0175
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
120 additions
and
28 deletions
+120
-28
style.css
cps/static/css/style.css
+6
-0
main.js
cps/static/js/main.js
+8
-0
author.html
cps/templates/author.html
+23
-11
config_view_edit.html
cps/templates/config_view_edit.html
+4
-0
discover.html
cps/templates/discover.html
+13
-3
index.html
cps/templates/index.html
+26
-6
search.html
cps/templates/search.html
+13
-3
shelf.html
cps/templates/shelf.html
+13
-3
ub.py
cps/ub.py
+8
-0
web.py
cps/web.py
+6
-2
No files found.
cps/static/css/style.css
View file @
8612dce9
...
...
@@ -36,6 +36,11 @@ a{color: #45b29d}a:hover{color: #444;}
.container-fluid
.book
.meta
.title
{
font-weight
:
bold
;
font-size
:
15px
;
color
:
#444
}
.container-fluid
.book
.meta
.author
{
font-size
:
12px
;
color
:
#999
}
.container-fluid
.book
.meta
.rating
{
margin-top
:
5px
}
.rating
.glyphicon-star
{
color
:
#999
}
.rating
.glyphicon-star.good
{
color
:
#45b29d
}
.container-fluid
.author
.author-hidden
,
.container-fluid
.author
.author-hidden-divider
{
display
:
none
;
}
.navbar-brand
{
font-family
:
'Grand Hotel'
,
cursive
;
font-size
:
35px
;
color
:
#45b29d
!important
;}
.more-stuff
{
margin-top
:
20px
;
padding-top
:
20px
;
border-top
:
1px
solid
#ccc
}
.more-stuff
>
li
{
margin-bottom
:
10px
;}
...
...
@@ -52,6 +57,7 @@ span.glyphicon.glyphicon-tags {padding-right: 5px;color: #999;vertical-align: te
-moz-box-shadow
:
0
5px
8px
-6px
#777
;
box-shadow
:
0
5px
8px
-6px
#777
;
}
.navbar-default
.navbar-toggle
.icon-bar
{
background-color
:
#000
;}
.navbar-default
.navbar-toggle
{
border-color
:
#000
;}
.cover
{
margin-bottom
:
10px
;}
...
...
cps/static/js/main.js
View file @
8612dce9
...
...
@@ -205,4 +205,12 @@ $(function() {
$
(
window
).
resize
(
function
()
{
$
(
".discover .row"
).
isotope
(
"layout"
);
});
$
(
".author-expand"
).
click
(
function
()
{
$
(
this
).
parent
().
find
(
"a.author-name"
).
slice
(
$
(
this
).
data
(
"authors-max"
)).
toggle
();
$
(
this
).
parent
().
find
(
"span.author-hidden-divider"
).
toggle
();
$
(
this
).
html
()
===
$
(
this
).
data
(
"collapse-caption"
)
?
$
(
this
).
html
(
"(...)"
)
:
$
(
this
).
html
(
$
(
this
).
data
(
"collapse-caption"
));
$
(
".discover .row"
).
isotope
(
"layout"
);
});
});
cps/templates/author.html
View file @
8612dce9
...
...
@@ -41,10 +41,20 @@
</a>
<p
class=
"author"
>
{% for author in entry.authors %}
<a
href=
"{{url_for('author', book_id=author.id) }}"
>
{{author.name.replace('|',',')}}
</a>
{% if not loop.last %}
&
{% endif %}
{% if loop.index > config_authors_max and config_authors_max != 0 %}
{% if not loop.first %}
<span
class=
"author-hidden-divider"
>
&
</span>
{% endif %}
<a
class=
"author-name author-hidden"
href=
"{{url_for('author', book_id=author.id) }}"
>
{{author.name.replace('|',',')|shortentitle(30)}}
</a>
{% if loop.last %}
<a
href=
"#"
class=
"author-expand"
data-authors-max=
"{{config_authors_max}}"
data-collapse-caption=
"({{_('reduce')}})"
>
(...)
</a>
{% endif %}
{% else %}
{% if not loop.first %}
<span>
&
</span>
{% endif %}
<a
class=
"author-name"
href=
"{{url_for('author', book_id=author.id) }}"
>
{{author.name.replace('|',',')|shortentitle(30)}}
</a>
{% endif %}
{% endfor %}
</p>
{% if entry.ratings.__len__() > 0 %}
...
...
@@ -80,13 +90,15 @@
<div
class=
"meta"
>
<p
class=
"title"
>
{{entry.title|shortentitle}}
</p>
<p
class=
"author"
>
{% for author in entry.authors %}
<a
href=
"https://www.goodreads.com/author/show/{{ author.gid }}"
target=
"_blank"
rel=
"noopener"
>
{{author.name.replace('|',',')}}
</a>
{% if not loop.last %}
&
{% endif %}
{% for author in entry.authors %}
{% if loop.index > config_authors_max and config_authors_max != 0 %}
<a
class=
"author-name author-hidden"
href=
"https://www.goodreads.com/author/show/{{ author.gid }}"
target=
"_blank"
rel=
"noopener"
>
{{author.name.replace('|',',')}}
</a>
{% if loop.last %}
<a
href=
"#"
class=
"author-expand"
data-authors-max=
"{{config_authors_max}}"
data-collapse-caption=
"({{_('reduce')}})"
>
(...)
</a>
{% endif %}
{% else %}
<a
class=
"author-name"
href=
"https://www.goodreads.com/author/show/{{ author.gid }}"
target=
"_blank"
rel=
"noopener"
>
{{author.name.replace('|',',')}}
</a>
{% endif %}
{% endfor %}
</p>
<div
class=
"rating"
>
...
...
cps/templates/config_view_edit.html
View file @
8612dce9
...
...
@@ -27,6 +27,10 @@
<label
for=
"config_random_books"
>
{{_('No. of random books to show')}}
</label>
<input
type=
"number"
min=
"1"
max=
"30"
class=
"form-control"
name=
"config_random_books"
id=
"config_random_books"
value=
"{% if content.config_random_books != None %}{{ content.config_random_books }}{% endif %}"
autocomplete=
"off"
>
</div>
<div
class=
"form-group"
>
<label
for=
"config_authors_max"
>
{{_('No. of authors to show before hiding (0=disable hiding)')}}
</label>
<input
type=
"number"
min=
"0"
max=
"999"
class=
"form-control"
name=
"config_authors_max"
id=
"config_authors_max"
value=
"{% if content.config_authors_max != None %}{{ content.config_authors_max }}{% endif %}"
autocomplete=
"off"
>
</div>
<div
class=
"form-group"
>
<label
for=
"config_theme"
>
{{_('Theme')}}
</label>
<select
name=
"config_theme"
id=
"config_theme"
class=
"form-control"
>
...
...
cps/templates/discover.html
View file @
8612dce9
...
...
@@ -19,9 +19,19 @@
</a>
<p
class=
"author"
>
{% for author in entry.authors %}
<a
href=
"{{url_for('author', book_id=author.id) }}"
>
{{author.name.replace('|',',')|shortentitle(30)}}
</a>
{% if not loop.last %}
&
{% if loop.index > config_authors_max and config_authors_max != 0 %}
{% if not loop.first %}
<span
class=
"author-hidden-divider"
>
&
</span>
{% endif %}
<a
class=
"author-name author-hidden"
href=
"{{url_for('author', book_id=author.id) }}"
>
{{author.name.replace('|',',')|shortentitle(30)}}
</a>
{% if loop.last %}
<a
href=
"#"
class=
"author-expand"
data-authors-max=
"{{config_authors_max}}"
data-collapse-caption=
"({{_('reduce')}})"
>
(...)
</a>
{% endif %}
{% else %}
{% if not loop.first %}
<span>
&
</span>
{% endif %}
<a
class=
"author-name"
href=
"{{url_for('author', book_id=author.id) }}"
>
{{author.name.replace('|',',')|shortentitle(30)}}
</a>
{% endif %}
{% endfor %}
</p>
...
...
cps/templates/index.html
View file @
8612dce9
...
...
@@ -22,9 +22,19 @@
</a>
<p
class=
"author"
>
{% for author in entry.authors %}
<a
href=
"{{url_for('author', book_id=author.id) }}"
>
{{author.name.replace('|',',')|shortentitle(30)}}
</a>
{% if not loop.last %}
&
{% if loop.index > config_authors_max and config_authors_max != 0 %}
{% if not loop.first %}
<span
class=
"author-hidden-divider"
>
&
</span>
{% endif %}
<a
class=
"author-name author-hidden"
href=
"{{url_for('author', book_id=author.id) }}"
>
{{author.name.replace('|',',')|shortentitle(30)}}
</a>
{% if loop.last %}
<a
href=
"#"
class=
"author-expand"
data-authors-max=
"{{config_authors_max}}"
data-collapse-caption=
"({{_('reduce')}})"
>
(...)
</a>
{% endif %}
{% else %}
{% if not loop.first %}
<span>
&
</span>
{% endif %}
<a
class=
"author-name"
href=
"{{url_for('author', book_id=author.id) }}"
>
{{author.name.replace('|',',')|shortentitle(30)}}
</a>
{% endif %}
{% endfor %}
</p>
...
...
@@ -67,9 +77,19 @@
</a>
<p
class=
"author"
>
{% for author in entry.authors %}
<a
href=
"{{url_for('author', book_id=author.id) }}"
>
{{author.name.replace('|',',')|shortentitle(30)}}
</a>
{% if not loop.last %}
&
{% if loop.index > config_authors_max and config_authors_max != 0 %}
{% if not loop.first %}
<span
class=
"author-hidden-divider"
>
&
</span>
{% endif %}
<a
class=
"author-name author-hidden"
href=
"{{url_for('author', book_id=author.id) }}"
>
{{author.name.replace('|',',')|shortentitle(30)}}
</a>
{% if loop.last %}
<a
href=
"#"
class=
"author-expand"
data-authors-max=
"{{config_authors_max}}"
data-collapse-caption=
"({{_('reduce')}})"
>
(...)
</a>
{% endif %}
{% else %}
{% if not loop.first %}
<span>
&
</span>
{% endif %}
<a
class=
"author-name"
href=
"{{url_for('author', book_id=author.id) }}"
>
{{author.name.replace('|',',')|shortentitle(30)}}
</a>
{% endif %}
{% endfor %}
</p>
...
...
cps/templates/search.html
View file @
8612dce9
...
...
@@ -46,9 +46,19 @@
</a>
<p
class=
"author"
>
{% for author in entry.authors %}
<a
href=
"{{url_for('author', book_id=author.id ) }}"
>
{{author.name.replace('|',',')}}
</a>
{% if not loop.last %}
&
{% if loop.index > config_authors_max and config_authors_max != 0 %}
{% if not loop.first %}
<span
class=
"author-hidden-divider"
>
&
</span>
{% endif %}
<a
class=
"author-name author-hidden"
href=
"{{url_for('author', book_id=author.id) }}"
>
{{author.name.replace('|',',')|shortentitle(30)}}
</a>
{% if loop.last %}
<a
href=
"#"
class=
"author-expand"
data-authors-max=
"{{config_authors_max}}"
data-collapse-caption=
"({{_('reduce')}})"
>
(...)
</a>
{% endif %}
{% else %}
{% if not loop.first %}
<span>
&
</span>
{% endif %}
<a
class=
"author-name"
href=
"{{url_for('author', book_id=author.id) }}"
>
{{author.name.replace('|',',')|shortentitle(30)}}
</a>
{% endif %}
{% endfor %}
</p>
...
...
cps/templates/shelf.html
View file @
8612dce9
...
...
@@ -28,9 +28,19 @@
</a>
<p
class=
"author"
>
{% for author in entry.authors %}
<a
href=
"{{url_for('author', book_id=author.id) }}"
>
{{author.name.replace('|',',')}}
</a>
{% if not loop.last %}
&
{% if loop.index > config_authors_max and config_authors_max != 0 %}
{% if not loop.first %}
<span
class=
"author-hidden-divider"
>
&
</span>
{% endif %}
<a
class=
"author-name author-hidden"
href=
"{{url_for('author', book_id=author.id) }}"
>
{{author.name.replace('|',',')|shortentitle(30)}}
</a>
{% if loop.last %}
<a
href=
"#"
class=
"author-expand"
data-authors-max=
"{{config_authors_max}}"
data-collapse-caption=
"({{_('reduce')}})"
>
(...)
</a>
{% endif %}
{% else %}
{% if not loop.first %}
<span>
&
</span>
{% endif %}
<a
class=
"author-name"
href=
"{{url_for('author', book_id=author.id) }}"
>
{{author.name.replace('|',',')|shortentitle(30)}}
</a>
{% endif %}
{% endfor %}
</p>
...
...
cps/ub.py
View file @
8612dce9
...
...
@@ -315,6 +315,7 @@ class Settings(Base):
config_calibre_web_title
=
Column
(
String
,
default
=
u'Calibre-Web'
)
config_books_per_page
=
Column
(
Integer
,
default
=
60
)
config_random_books
=
Column
(
Integer
,
default
=
4
)
config_authors_max
=
Column
(
Integer
,
default
=
0
)
config_read_column
=
Column
(
Integer
,
default
=
0
)
config_title_regex
=
Column
(
String
,
default
=
u'^(A|The|An|Der|Die|Das|Den|Ein|Eine|Einen|Dem|Des|Einem|Eines)
\
s+'
)
config_log_level
=
Column
(
SmallInteger
,
default
=
logging
.
INFO
)
...
...
@@ -380,6 +381,7 @@ class Config:
self
.
config_calibre_web_title
=
data
.
config_calibre_web_title
self
.
config_books_per_page
=
data
.
config_books_per_page
self
.
config_random_books
=
data
.
config_random_books
self
.
config_authors_max
=
data
.
config_authors_max
self
.
config_title_regex
=
data
.
config_title_regex
self
.
config_read_column
=
data
.
config_read_column
self
.
config_log_level
=
data
.
config_log_level
...
...
@@ -601,6 +603,12 @@ def migrate_Database():
conn
=
engine
.
connect
()
conn
.
execute
(
"ALTER TABLE Settings ADD column `config_default_role` SmallInteger DEFAULT 0"
)
session
.
commit
()
try
:
session
.
query
(
exists
()
.
where
(
Settings
.
config_authors_max
))
.
scalar
()
except
exc
.
OperationalError
:
# Database is not compatible, some rows are missing
conn
=
engine
.
connect
()
conn
.
execute
(
"ALTER TABLE Settings ADD column `config_authors_max` INTEGER DEFAULT 0"
)
session
.
commit
()
try
:
session
.
query
(
exists
()
.
where
(
BookShelf
.
order
))
.
scalar
()
except
exc
.
OperationalError
:
# Database is not compatible, some rows are missing
...
...
cps/web.py
View file @
8612dce9
...
...
@@ -1210,7 +1210,7 @@ def get_updater_status():
def
index
(
page
):
entries
,
random
,
pagination
=
fill_indexpage
(
page
,
db
.
Books
,
True
,
[
db
.
Books
.
timestamp
.
desc
()])
return
render_title_template
(
'index.html'
,
random
=
random
,
entries
=
entries
,
pagination
=
pagination
,
title
=
_
(
u"Recently Added Books"
),
page
=
"root"
)
title
=
_
(
u"Recently Added Books"
),
page
=
"root"
,
config_authors_max
=
config
.
config_authors_max
)
@
app
.
route
(
'/books/newest'
,
defaults
=
{
'page'
:
1
})
...
...
@@ -1354,7 +1354,8 @@ def author(book_id, page):
app
.
logger
.
error
(
'Goodreads website is down/inaccessible'
)
return
render_title_template
(
'author.html'
,
entries
=
entries
,
pagination
=
pagination
,
title
=
name
,
author
=
author_info
,
other_books
=
other_books
,
page
=
"author"
)
title
=
name
,
author
=
author_info
,
other_books
=
other_books
,
page
=
"author"
,
config_authors_max
=
config
.
config_authors_max
)
@
app
.
route
(
"/publisher"
)
...
...
@@ -2820,6 +2821,9 @@ def view_configuration():
content
.
config_random_books
=
int
(
to_save
[
"config_random_books"
])
if
"config_books_per_page"
in
to_save
:
content
.
config_books_per_page
=
int
(
to_save
[
"config_books_per_page"
])
# maximum authors to show before we display a 'show more' link
if
"config_authors_max"
in
to_save
:
content
.
config_authors_max
=
int
(
to_save
[
"config_authors_max"
])
# Mature Content configuration
if
"config_mature_content_tags"
in
to_save
:
content
.
config_mature_content_tags
=
to_save
[
"config_mature_content_tags"
]
.
strip
()
...
...
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