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
aaa70606
Commit
aaa70606
authored
Jul 16, 2018
by
OzzieIsaacs
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Implemented #417
parent
8896b3c5
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
21 additions
and
22 deletions
+21
-22
web.py
cps/web.py
+21
-22
No files found.
cps/web.py
View file @
aaa70606
...
@@ -50,7 +50,6 @@ from flask_principal import __version__ as flask_principalVersion
...
@@ -50,7 +50,6 @@ from flask_principal import __version__ as flask_principalVersion
from
flask_babel
import
Babel
from
flask_babel
import
Babel
from
flask_babel
import
gettext
as
_
from
flask_babel
import
gettext
as
_
import
requests
import
requests
# import zipfile
from
werkzeug.security
import
generate_password_hash
,
check_password_hash
from
werkzeug.security
import
generate_password_hash
,
check_password_hash
from
werkzeug.datastructures
import
Headers
from
werkzeug.datastructures
import
Headers
from
babel
import
Locale
as
LC
from
babel
import
Locale
as
LC
...
@@ -467,7 +466,7 @@ def common_filters():
...
@@ -467,7 +466,7 @@ def common_filters():
# Fill indexpage with all requested data from database
# Fill indexpage with all requested data from database
def
fill_indexpage
(
page
,
database
,
db_filter
,
order
):
def
fill_indexpage
(
page
,
database
,
db_filter
,
order
,
*
join
):
if
current_user
.
show_detail_random
():
if
current_user
.
show_detail_random
():
random
=
db
.
session
.
query
(
db
.
Books
)
.
filter
(
common_filters
())
\
random
=
db
.
session
.
query
(
db
.
Books
)
.
filter
(
common_filters
())
\
.
order_by
(
func
.
random
())
.
limit
(
config
.
config_random_books
)
.
order_by
(
func
.
random
())
.
limit
(
config
.
config_random_books
)
...
@@ -476,9 +475,9 @@ def fill_indexpage(page, database, db_filter, order):
...
@@ -476,9 +475,9 @@ def fill_indexpage(page, database, db_filter, order):
off
=
int
(
int
(
config
.
config_books_per_page
)
*
(
page
-
1
))
off
=
int
(
int
(
config
.
config_books_per_page
)
*
(
page
-
1
))
pagination
=
Pagination
(
page
,
config
.
config_books_per_page
,
pagination
=
Pagination
(
page
,
config
.
config_books_per_page
,
len
(
db
.
session
.
query
(
database
)
len
(
db
.
session
.
query
(
database
)
.
filter
(
db_filter
)
.
filter
(
common_filters
())
.
all
()))
.
filter
(
db_filter
)
.
filter
(
common_filters
())
.
all
()))
entries
=
db
.
session
.
query
(
database
)
.
filter
(
db_filter
)
.
filter
(
common_filters
()
)
\
entries
=
db
.
session
.
query
(
database
)
.
join
(
*
join
,
isouter
=
True
)
.
filter
(
db_filter
)
\
.
order_by
(
order
)
.
offset
(
off
)
.
limit
(
config
.
config_books_per_page
)
.
filter
(
common_filters
())
.
order_by
(
*
order
)
.
offset
(
off
)
.
limit
(
config
.
config_books_per_page
)
.
all
(
)
return
entries
,
random
,
pagination
return
entries
,
random
,
pagination
...
@@ -625,7 +624,7 @@ def feed_new():
...
@@ -625,7 +624,7 @@ def feed_new():
if
not
off
:
if
not
off
:
off
=
0
off
=
0
entries
,
__
,
pagination
=
fill_indexpage
((
int
(
off
)
/
(
int
(
config
.
config_books_per_page
))
+
1
),
entries
,
__
,
pagination
=
fill_indexpage
((
int
(
off
)
/
(
int
(
config
.
config_books_per_page
))
+
1
),
db
.
Books
,
True
,
db
.
Books
.
timestamp
.
desc
()
)
db
.
Books
,
True
,
[
db
.
Books
.
timestamp
.
desc
()]
)
xml
=
render_title_template
(
'feed.xml'
,
entries
=
entries
,
pagination
=
pagination
)
xml
=
render_title_template
(
'feed.xml'
,
entries
=
entries
,
pagination
=
pagination
)
response
=
make_response
(
xml
)
response
=
make_response
(
xml
)
response
.
headers
[
"Content-Type"
]
=
"application/atom+xml; charset=utf-8"
response
.
headers
[
"Content-Type"
]
=
"application/atom+xml; charset=utf-8"
...
@@ -651,7 +650,7 @@ def feed_best_rated():
...
@@ -651,7 +650,7 @@ def feed_best_rated():
if
not
off
:
if
not
off
:
off
=
0
off
=
0
entries
,
__
,
pagination
=
fill_indexpage
((
int
(
off
)
/
(
int
(
config
.
config_books_per_page
))
+
1
),
entries
,
__
,
pagination
=
fill_indexpage
((
int
(
off
)
/
(
int
(
config
.
config_books_per_page
))
+
1
),
db
.
Books
,
db
.
Books
.
ratings
.
any
(
db
.
Ratings
.
rating
>
9
),
db
.
Books
.
timestamp
.
desc
()
)
db
.
Books
,
db
.
Books
.
ratings
.
any
(
db
.
Ratings
.
rating
>
9
),
[
db
.
Books
.
timestamp
.
desc
()]
)
xml
=
render_title_template
(
'feed.xml'
,
entries
=
entries
,
pagination
=
pagination
)
xml
=
render_title_template
(
'feed.xml'
,
entries
=
entries
,
pagination
=
pagination
)
response
=
make_response
(
xml
)
response
=
make_response
(
xml
)
response
.
headers
[
"Content-Type"
]
=
"application/atom+xml; charset=utf-8"
response
.
headers
[
"Content-Type"
]
=
"application/atom+xml; charset=utf-8"
...
@@ -710,7 +709,7 @@ def feed_author(book_id):
...
@@ -710,7 +709,7 @@ def feed_author(book_id):
if
not
off
:
if
not
off
:
off
=
0
off
=
0
entries
,
__
,
pagination
=
fill_indexpage
((
int
(
off
)
/
(
int
(
config
.
config_books_per_page
))
+
1
),
entries
,
__
,
pagination
=
fill_indexpage
((
int
(
off
)
/
(
int
(
config
.
config_books_per_page
))
+
1
),
db
.
Books
,
db
.
Books
.
authors
.
any
(
db
.
Authors
.
id
==
book_id
),
db
.
Books
.
timestamp
.
desc
()
)
db
.
Books
,
db
.
Books
.
authors
.
any
(
db
.
Authors
.
id
==
book_id
),
[
db
.
Books
.
timestamp
.
desc
()]
)
xml
=
render_title_template
(
'feed.xml'
,
entries
=
entries
,
pagination
=
pagination
)
xml
=
render_title_template
(
'feed.xml'
,
entries
=
entries
,
pagination
=
pagination
)
response
=
make_response
(
xml
)
response
=
make_response
(
xml
)
response
.
headers
[
"Content-Type"
]
=
"application/atom+xml; charset=utf-8"
response
.
headers
[
"Content-Type"
]
=
"application/atom+xml; charset=utf-8"
...
@@ -740,7 +739,7 @@ def feed_category(book_id):
...
@@ -740,7 +739,7 @@ def feed_category(book_id):
if
not
off
:
if
not
off
:
off
=
0
off
=
0
entries
,
__
,
pagination
=
fill_indexpage
((
int
(
off
)
/
(
int
(
config
.
config_books_per_page
))
+
1
),
entries
,
__
,
pagination
=
fill_indexpage
((
int
(
off
)
/
(
int
(
config
.
config_books_per_page
))
+
1
),
db
.
Books
,
db
.
Books
.
tags
.
any
(
db
.
Tags
.
id
==
book_id
),
db
.
Books
.
timestamp
.
desc
()
)
db
.
Books
,
db
.
Books
.
tags
.
any
(
db
.
Tags
.
id
==
book_id
),
[
db
.
Books
.
timestamp
.
desc
()]
)
xml
=
render_title_template
(
'feed.xml'
,
entries
=
entries
,
pagination
=
pagination
)
xml
=
render_title_template
(
'feed.xml'
,
entries
=
entries
,
pagination
=
pagination
)
response
=
make_response
(
xml
)
response
=
make_response
(
xml
)
response
.
headers
[
"Content-Type"
]
=
"application/atom+xml; charset=utf-8"
response
.
headers
[
"Content-Type"
]
=
"application/atom+xml; charset=utf-8"
...
@@ -770,7 +769,7 @@ def feed_series(book_id):
...
@@ -770,7 +769,7 @@ def feed_series(book_id):
if
not
off
:
if
not
off
:
off
=
0
off
=
0
entries
,
random
,
pagination
=
fill_indexpage
((
int
(
off
)
/
(
int
(
config
.
config_books_per_page
))
+
1
),
entries
,
random
,
pagination
=
fill_indexpage
((
int
(
off
)
/
(
int
(
config
.
config_books_per_page
))
+
1
),
db
.
Books
,
db
.
Books
.
series
.
any
(
db
.
Series
.
id
==
book_id
),
db
.
Books
.
series_index
)
db
.
Books
,
db
.
Books
.
series
.
any
(
db
.
Series
.
id
==
book_id
),
[
db
.
Books
.
series_index
]
)
xml
=
render_title_template
(
'feed.xml'
,
entries
=
entries
,
pagination
=
pagination
)
xml
=
render_title_template
(
'feed.xml'
,
entries
=
entries
,
pagination
=
pagination
)
response
=
make_response
(
xml
)
response
=
make_response
(
xml
)
response
.
headers
[
"Content-Type"
]
=
"application/atom+xml; charset=utf-8"
response
.
headers
[
"Content-Type"
]
=
"application/atom+xml; charset=utf-8"
...
@@ -1029,7 +1028,7 @@ def get_matching_tags():
...
@@ -1029,7 +1028,7 @@ def get_matching_tags():
@
app
.
route
(
'/page/<int:page>'
)
@
app
.
route
(
'/page/<int:page>'
)
@
login_required_if_no_ano
@
login_required_if_no_ano
def
index
(
page
):
def
index
(
page
):
entries
,
random
,
pagination
=
fill_indexpage
(
page
,
db
.
Books
,
True
,
db
.
Books
.
timestamp
.
desc
()
)
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
,
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"
)
...
@@ -1039,7 +1038,7 @@ def index(page):
...
@@ -1039,7 +1038,7 @@ def index(page):
@
login_required_if_no_ano
@
login_required_if_no_ano
def
newest_books
(
page
):
def
newest_books
(
page
):
if
current_user
.
show_sorted
():
if
current_user
.
show_sorted
():
entries
,
random
,
pagination
=
fill_indexpage
(
page
,
db
.
Books
,
True
,
db
.
Books
.
pubdate
.
desc
()
)
entries
,
random
,
pagination
=
fill_indexpage
(
page
,
db
.
Books
,
True
,
[
db
.
Books
.
pubdate
.
desc
()]
)
return
render_title_template
(
'index.html'
,
random
=
random
,
entries
=
entries
,
pagination
=
pagination
,
return
render_title_template
(
'index.html'
,
random
=
random
,
entries
=
entries
,
pagination
=
pagination
,
title
=
_
(
u"Newest Books"
),
page
=
"newest"
)
title
=
_
(
u"Newest Books"
),
page
=
"newest"
)
else
:
else
:
...
@@ -1051,7 +1050,7 @@ def newest_books(page):
...
@@ -1051,7 +1050,7 @@ def newest_books(page):
@
login_required_if_no_ano
@
login_required_if_no_ano
def
oldest_books
(
page
):
def
oldest_books
(
page
):
if
current_user
.
show_sorted
():
if
current_user
.
show_sorted
():
entries
,
random
,
pagination
=
fill_indexpage
(
page
,
db
.
Books
,
True
,
db
.
Books
.
pubdate
)
entries
,
random
,
pagination
=
fill_indexpage
(
page
,
db
.
Books
,
True
,
[
db
.
Books
.
pubdate
]
)
return
render_title_template
(
'index.html'
,
random
=
random
,
entries
=
entries
,
pagination
=
pagination
,
return
render_title_template
(
'index.html'
,
random
=
random
,
entries
=
entries
,
pagination
=
pagination
,
title
=
_
(
u"Oldest Books"
),
page
=
"oldest"
)
title
=
_
(
u"Oldest Books"
),
page
=
"oldest"
)
else
:
else
:
...
@@ -1063,7 +1062,7 @@ def oldest_books(page):
...
@@ -1063,7 +1062,7 @@ def oldest_books(page):
@
login_required_if_no_ano
@
login_required_if_no_ano
def
titles_ascending
(
page
):
def
titles_ascending
(
page
):
if
current_user
.
show_sorted
():
if
current_user
.
show_sorted
():
entries
,
random
,
pagination
=
fill_indexpage
(
page
,
db
.
Books
,
True
,
db
.
Books
.
sort
)
entries
,
random
,
pagination
=
fill_indexpage
(
page
,
db
.
Books
,
True
,
[
db
.
Books
.
sort
]
)
return
render_title_template
(
'index.html'
,
random
=
random
,
entries
=
entries
,
pagination
=
pagination
,
return
render_title_template
(
'index.html'
,
random
=
random
,
entries
=
entries
,
pagination
=
pagination
,
title
=
_
(
u"Books (A-Z)"
),
page
=
"a-z"
)
title
=
_
(
u"Books (A-Z)"
),
page
=
"a-z"
)
else
:
else
:
...
@@ -1074,7 +1073,7 @@ def titles_ascending(page):
...
@@ -1074,7 +1073,7 @@ def titles_ascending(page):
@
app
.
route
(
'/books/z-a/page/<int:page>'
)
@
app
.
route
(
'/books/z-a/page/<int:page>'
)
@
login_required_if_no_ano
@
login_required_if_no_ano
def
titles_descending
(
page
):
def
titles_descending
(
page
):
entries
,
random
,
pagination
=
fill_indexpage
(
page
,
db
.
Books
,
True
,
db
.
Books
.
sort
.
desc
()
)
entries
,
random
,
pagination
=
fill_indexpage
(
page
,
db
.
Books
,
True
,
[
db
.
Books
.
sort
.
desc
()]
)
return
render_title_template
(
'index.html'
,
random
=
random
,
entries
=
entries
,
pagination
=
pagination
,
return
render_title_template
(
'index.html'
,
random
=
random
,
entries
=
entries
,
pagination
=
pagination
,
title
=
_
(
u"Books (Z-A)"
),
page
=
"z-a"
)
title
=
_
(
u"Books (Z-A)"
),
page
=
"z-a"
)
...
@@ -1116,7 +1115,7 @@ def hot_books(page):
...
@@ -1116,7 +1115,7 @@ def hot_books(page):
def
best_rated_books
(
page
):
def
best_rated_books
(
page
):
if
current_user
.
show_best_rated_books
():
if
current_user
.
show_best_rated_books
():
entries
,
random
,
pagination
=
fill_indexpage
(
page
,
db
.
Books
,
db
.
Books
.
ratings
.
any
(
db
.
Ratings
.
rating
>
9
),
entries
,
random
,
pagination
=
fill_indexpage
(
page
,
db
.
Books
,
db
.
Books
.
ratings
.
any
(
db
.
Ratings
.
rating
>
9
),
db
.
Books
.
timestamp
.
desc
()
)
[
db
.
Books
.
timestamp
.
desc
()]
)
return
render_title_template
(
'index.html'
,
random
=
random
,
entries
=
entries
,
pagination
=
pagination
,
return
render_title_template
(
'index.html'
,
random
=
random
,
entries
=
entries
,
pagination
=
pagination
,
title
=
_
(
u"Best rated books"
),
page
=
"rated"
)
title
=
_
(
u"Best rated books"
),
page
=
"rated"
)
abort
(
404
)
abort
(
404
)
...
@@ -1127,7 +1126,7 @@ def best_rated_books(page):
...
@@ -1127,7 +1126,7 @@ def best_rated_books(page):
@
login_required_if_no_ano
@
login_required_if_no_ano
def
discover
(
page
):
def
discover
(
page
):
if
current_user
.
show_random_books
():
if
current_user
.
show_random_books
():
entries
,
__
,
pagination
=
fill_indexpage
(
page
,
db
.
Books
,
True
,
func
.
randomblob
(
2
)
)
entries
,
__
,
pagination
=
fill_indexpage
(
page
,
db
.
Books
,
True
,
[
func
.
randomblob
(
2
)]
)
pagination
=
Pagination
(
1
,
config
.
config_books_per_page
,
config
.
config_books_per_page
)
pagination
=
Pagination
(
1
,
config
.
config_books_per_page
,
config
.
config_books_per_page
)
return
render_title_template
(
'discover.html'
,
entries
=
entries
,
pagination
=
pagination
,
return
render_title_template
(
'discover.html'
,
entries
=
entries
,
pagination
=
pagination
,
title
=
_
(
u"Random Books"
),
page
=
"discover"
)
title
=
_
(
u"Random Books"
),
page
=
"discover"
)
...
@@ -1155,7 +1154,7 @@ def author_list():
...
@@ -1155,7 +1154,7 @@ def author_list():
@
login_required_if_no_ano
@
login_required_if_no_ano
def
author
(
book_id
,
page
):
def
author
(
book_id
,
page
):
entries
,
__
,
pagination
=
fill_indexpage
(
page
,
db
.
Books
,
db
.
Books
.
authors
.
any
(
db
.
Authors
.
id
==
book_id
),
entries
,
__
,
pagination
=
fill_indexpage
(
page
,
db
.
Books
,
db
.
Books
.
authors
.
any
(
db
.
Authors
.
id
==
book_id
),
db
.
Books
.
timestamp
.
desc
()
)
[
db
.
Books
.
timestamp
.
desc
()]
)
if
entries
is
None
:
if
entries
is
None
:
flash
(
_
(
u"Error opening eBook. File does not exist or file is not accessible:"
),
category
=
"error"
)
flash
(
_
(
u"Error opening eBook. File does not exist or file is not accessible:"
),
category
=
"error"
)
return
redirect
(
url_for
(
"index"
))
return
redirect
(
url_for
(
"index"
))
...
@@ -1214,7 +1213,7 @@ def series_list():
...
@@ -1214,7 +1213,7 @@ def series_list():
@
login_required_if_no_ano
@
login_required_if_no_ano
def
series
(
book_id
,
page
):
def
series
(
book_id
,
page
):
entries
,
random
,
pagination
=
fill_indexpage
(
page
,
db
.
Books
,
db
.
Books
.
series
.
any
(
db
.
Series
.
id
==
book_id
),
entries
,
random
,
pagination
=
fill_indexpage
(
page
,
db
.
Books
,
db
.
Books
.
series
.
any
(
db
.
Series
.
id
==
book_id
),
db
.
Books
.
series_index
)
[
db
.
Books
.
series_index
]
)
name
=
db
.
session
.
query
(
db
.
Series
)
.
filter
(
db
.
Series
.
id
==
book_id
)
.
first
()
.
name
name
=
db
.
session
.
query
(
db
.
Series
)
.
filter
(
db
.
Series
.
id
==
book_id
)
.
first
()
.
name
if
entries
:
if
entries
:
return
render_title_template
(
'index.html'
,
random
=
random
,
pagination
=
pagination
,
entries
=
entries
,
return
render_title_template
(
'index.html'
,
random
=
random
,
pagination
=
pagination
,
entries
=
entries
,
...
@@ -1261,7 +1260,7 @@ def language_overview():
...
@@ -1261,7 +1260,7 @@ def language_overview():
@
login_required_if_no_ano
@
login_required_if_no_ano
def
language
(
name
,
page
):
def
language
(
name
,
page
):
entries
,
random
,
pagination
=
fill_indexpage
(
page
,
db
.
Books
,
db
.
Books
.
languages
.
any
(
db
.
Languages
.
lang_code
==
name
),
entries
,
random
,
pagination
=
fill_indexpage
(
page
,
db
.
Books
,
db
.
Books
.
languages
.
any
(
db
.
Languages
.
lang_code
==
name
),
db
.
Books
.
timestamp
.
desc
()
)
[
db
.
Books
.
timestamp
.
desc
()]
)
try
:
try
:
cur_l
=
LC
.
parse
(
name
)
cur_l
=
LC
.
parse
(
name
)
name
=
cur_l
.
get_language_name
(
get_locale
())
name
=
cur_l
.
get_language_name
(
get_locale
())
...
@@ -1289,7 +1288,7 @@ def category_list():
...
@@ -1289,7 +1288,7 @@ def category_list():
@
login_required_if_no_ano
@
login_required_if_no_ano
def
category
(
book_id
,
page
):
def
category
(
book_id
,
page
):
entries
,
random
,
pagination
=
fill_indexpage
(
page
,
db
.
Books
,
db
.
Books
.
tags
.
any
(
db
.
Tags
.
id
==
book_id
),
entries
,
random
,
pagination
=
fill_indexpage
(
page
,
db
.
Books
,
db
.
Books
.
tags
.
any
(
db
.
Tags
.
id
==
book_id
),
db
.
Books
.
timestamp
.
desc
()
)
(
db
.
Series
.
name
,
db
.
Books
.
series_index
),
db
.
books_series_link
,
db
.
Series
)
name
=
db
.
session
.
query
(
db
.
Tags
)
.
filter
(
db
.
Tags
.
id
==
book_id
)
.
first
()
.
name
name
=
db
.
session
.
query
(
db
.
Tags
)
.
filter
(
db
.
Tags
.
id
==
book_id
)
.
first
()
.
name
return
render_title_template
(
'index.html'
,
random
=
random
,
entries
=
entries
,
pagination
=
pagination
,
return
render_title_template
(
'index.html'
,
random
=
random
,
entries
=
entries
,
pagination
=
pagination
,
...
@@ -1859,7 +1858,7 @@ def render_read_books(page, are_read, as_xml=False):
...
@@ -1859,7 +1858,7 @@ def render_read_books(page, are_read, as_xml=False):
db_filter
=
~
db
.
Books
.
id
.
in_
(
readBookIds
)
db_filter
=
~
db
.
Books
.
id
.
in_
(
readBookIds
)
entries
,
random
,
pagination
=
fill_indexpage
(
page
,
db
.
Books
,
entries
,
random
,
pagination
=
fill_indexpage
(
page
,
db
.
Books
,
db_filter
,
db
.
Books
.
timestamp
.
desc
()
)
db_filter
,
[
db
.
Books
.
timestamp
.
desc
()]
)
if
as_xml
:
if
as_xml
:
xml
=
render_title_template
(
'feed.xml'
,
entries
=
entries
,
pagination
=
pagination
)
xml
=
render_title_template
(
'feed.xml'
,
entries
=
entries
,
pagination
=
pagination
)
...
...
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