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
58895353
Commit
58895353
authored
Aug 19, 2018
by
OzzieIsaacs
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Bugfix gdrive download Books
Bugfix pagination Fix Error messages massadd of books to shelf
parent
d414bf32
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
27 additions
and
17 deletions
+27
-17
web.py
cps/web.py
+27
-17
No files found.
cps/web.py
View file @
58895353
...
@@ -288,12 +288,18 @@ class Pagination(object):
...
@@ -288,12 +288,18 @@ class Pagination(object):
def
has_next
(
self
):
def
has_next
(
self
):
return
self
.
page
<
self
.
pages
return
self
.
page
<
self
.
pages
# right_edge: last right_edges count of all pages are shown as number, means, if 10 pages are paginated -> 9,10 shown
# left_edge: first left_edges count of all pages are shown as number -> 1,2 shown
# left_current: left_current count below current page are shown as number, means if current page 5 -> 3,4 shown
# left_current: right_current count above current page are shown as number, means if current page 5 -> 6,7 shown
def
iter_pages
(
self
,
left_edge
=
2
,
left_current
=
2
,
def
iter_pages
(
self
,
left_edge
=
2
,
left_current
=
2
,
right_current
=
5
,
right_edge
=
2
):
right_current
=
4
,
right_edge
=
2
):
last
=
0
last
=
0
for
num
in
range
(
self
.
pages
,
(
self
.
pages
+
1
)):
# ToDo: can be simplified
left_current
=
self
.
page
-
left_current
-
1
if
num
<=
left_edge
or
(
num
>
self
.
page
-
left_current
-
1
and
num
<
self
.
page
+
right_current
)
\
right_current
=
self
.
page
+
right_current
+
1
or
num
>
self
.
pages
-
right_edge
:
right_edge
=
self
.
pages
-
right_edge
for
num
in
range
(
1
,
(
self
.
pages
+
1
)):
if
num
<=
left_edge
or
(
left_current
<
num
<
right_current
)
or
num
>
right_edge
:
if
last
+
1
!=
num
:
if
last
+
1
!=
num
:
yield
None
yield
None
yield
num
yield
num
...
@@ -1372,11 +1378,11 @@ def bookmark(book_id, book_format):
...
@@ -1372,11 +1378,11 @@ def bookmark(book_id, book_format):
ub
.
session
.
commit
()
ub
.
session
.
commit
()
return
""
,
204
return
""
,
204
bookmark
=
ub
.
Bookmark
(
user_id
=
current_user
.
id
,
l
bookmark
=
ub
.
Bookmark
(
user_id
=
current_user
.
id
,
book_id
=
book_id
,
book_id
=
book_id
,
format
=
book_format
,
format
=
book_format
,
bookmark_key
=
bookmark_key
)
bookmark_key
=
bookmark_key
)
ub
.
session
.
merge
(
bookmark
)
ub
.
session
.
merge
(
l
bookmark
)
ub
.
session
.
commit
()
ub
.
session
.
commit
()
return
""
,
201
return
""
,
201
...
@@ -1800,12 +1806,12 @@ def advanced_search():
...
@@ -1800,12 +1806,12 @@ def advanced_search():
series
=
series
,
title
=
_
(
u"search"
),
cc
=
cc
,
page
=
"advsearch"
)
series
=
series
,
title
=
_
(
u"search"
),
cc
=
cc
,
page
=
"advsearch"
)
@
app
.
route
(
"/cover/<path:cover_path>"
)
@
app
.
route
(
"/cover/<path:cover_path>"
)
@
login_required_if_no_ano
@
login_required_if_no_ano
def
get_cover
(
cover_path
):
def
get_cover
(
cover_path
):
return
helper
.
get_book_cover
(
cover_path
)
return
helper
.
get_book_cover
(
cover_path
)
@
app
.
route
(
"/show/<book_id>/<book_format>"
)
@
app
.
route
(
"/show/<book_id>/<book_format>"
)
@
login_required_if_no_ano
@
login_required_if_no_ano
def
serve_book
(
book_id
,
book_format
):
def
serve_book
(
book_id
,
book_format
):
...
@@ -1820,7 +1826,7 @@ def serve_book(book_id, book_format):
...
@@ -1820,7 +1826,7 @@ def serve_book(book_id, book_format):
except
KeyError
:
except
KeyError
:
headers
[
"Content-Type"
]
=
"application/octet-stream"
headers
[
"Content-Type"
]
=
"application/octet-stream"
df
=
gdriveutils
.
getFileFromEbooksFolder
(
book
.
path
,
data
.
name
+
"."
+
book_format
)
df
=
gdriveutils
.
getFileFromEbooksFolder
(
book
.
path
,
data
.
name
+
"."
+
book_format
)
return
do_gdrive_download
(
df
,
headers
)
return
gdriveutils
.
do_gdrive_download
(
df
,
headers
)
else
:
else
:
return
send_from_directory
(
os
.
path
.
join
(
config
.
config_calibre_dir
,
book
.
path
),
data
.
name
+
"."
+
book_format
)
return
send_from_directory
(
os
.
path
.
join
(
config
.
config_calibre_dir
,
book
.
path
),
data
.
name
+
"."
+
book_format
)
...
@@ -1847,7 +1853,7 @@ def render_read_books(page, are_read, as_xml=False):
...
@@ -1847,7 +1853,7 @@ def render_read_books(page, are_read, as_xml=False):
readBookIds
=
[
x
.
book
for
x
in
readBooks
]
readBookIds
=
[
x
.
book
for
x
in
readBooks
]
except
KeyError
:
except
KeyError
:
app
.
logger
.
error
(
u"Custom Column No.
%
d is not existing in calibre database"
%
config
.
config_read_column
)
app
.
logger
.
error
(
u"Custom Column No.
%
d is not existing in calibre database"
%
config
.
config_read_column
)
readBookIds
=
[]
readBookIds
=
[]
if
are_read
:
if
are_read
:
db_filter
=
db
.
Books
.
id
.
in_
(
readBookIds
)
db_filter
=
db
.
Books
.
id
.
in_
(
readBookIds
)
...
@@ -1855,7 +1861,7 @@ def render_read_books(page, are_read, as_xml=False):
...
@@ -1855,7 +1861,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
)
...
@@ -1913,13 +1919,13 @@ def read_book(book_id, book_format):
...
@@ -1913,13 +1919,13 @@ def read_book(book_id, book_format):
return
redirect
(
url_for
(
"index"
))
return
redirect
(
url_for
(
"index"
))
# check if book was downloaded before
# check if book was downloaded before
bookmark
=
None
l
bookmark
=
None
if
current_user
.
is_authenticated
:
if
current_user
.
is_authenticated
:
bookmark
=
ub
.
session
.
query
(
ub
.
Bookmark
)
.
filter
(
ub
.
and_
(
ub
.
Bookmark
.
user_id
==
int
(
current_user
.
id
),
l
bookmark
=
ub
.
session
.
query
(
ub
.
Bookmark
)
.
filter
(
ub
.
and_
(
ub
.
Bookmark
.
user_id
==
int
(
current_user
.
id
),
ub
.
Bookmark
.
book_id
==
book_id
,
ub
.
Bookmark
.
book_id
==
book_id
,
ub
.
Bookmark
.
format
==
book_format
.
upper
()))
.
first
()
ub
.
Bookmark
.
format
==
book_format
.
upper
()))
.
first
()
if
book_format
.
lower
()
==
"epub"
:
if
book_format
.
lower
()
==
"epub"
:
return
render_title_template
(
'read.html'
,
bookid
=
book_id
,
title
=
_
(
u"Read a Book"
),
bookmark
=
bookmark
)
return
render_title_template
(
'read.html'
,
bookid
=
book_id
,
title
=
_
(
u"Read a Book"
),
bookmark
=
l
bookmark
)
elif
book_format
.
lower
()
==
"pdf"
:
elif
book_format
.
lower
()
==
"pdf"
:
return
render_title_template
(
'readpdf.html'
,
pdffile
=
book_id
,
title
=
_
(
u"Read a Book"
))
return
render_title_template
(
'readpdf.html'
,
pdffile
=
book_id
,
title
=
_
(
u"Read a Book"
))
elif
book_format
.
lower
()
==
"txt"
:
elif
book_format
.
lower
()
==
"txt"
:
...
@@ -2199,21 +2205,25 @@ def add_to_shelf(shelf_id, book_id):
...
@@ -2199,21 +2205,25 @@ def add_to_shelf(shelf_id, book_id):
return
redirect
(
request
.
environ
[
"HTTP_REFERER"
])
return
redirect
(
request
.
environ
[
"HTTP_REFERER"
])
return
""
,
204
return
""
,
204
@
app
.
route
(
"/shelf/massadd/<int:shelf_id>"
)
@
app
.
route
(
"/shelf/massadd/<int:shelf_id>"
)
@
login_required
@
login_required
def
search_to_shelf
(
shelf_id
):
def
search_to_shelf
(
shelf_id
):
shelf
=
ub
.
session
.
query
(
ub
.
Shelf
)
.
filter
(
ub
.
Shelf
.
id
==
shelf_id
)
.
first
()
shelf
=
ub
.
session
.
query
(
ub
.
Shelf
)
.
filter
(
ub
.
Shelf
.
id
==
shelf_id
)
.
first
()
if
shelf
is
None
:
if
shelf
is
None
:
app
.
logger
.
info
(
"Invalid shelf specified"
)
app
.
logger
.
info
(
"Invalid shelf specified"
)
return
"Invalid shelf specified"
,
400
flash
(
_
(
u"Invalid shelf specified"
),
category
=
"error"
)
return
redirect
(
url_for
(
'index'
))
if
not
shelf
.
is_public
and
not
shelf
.
user_id
==
int
(
current_user
.
id
):
if
not
shelf
.
is_public
and
not
shelf
.
user_id
==
int
(
current_user
.
id
):
app
.
logger
.
info
(
"Sorry you are not allowed to add a book to the the shelf:
%
s"
%
shelf
.
name
)
app
.
logger
.
info
(
"You are not allowed to add a book to the the shelf:
%
s"
%
shelf
.
name
)
return
"Sorry you are not allowed to add a book to the the shelf:
%
s"
%
shelf
.
name
,
403
flash
(
_
(
u"You are not allowed to add a book to the the shelf:
%
s"
%
shelf
.
name
),
category
=
"error"
)
return
redirect
(
url_for
(
'index'
))
if
shelf
.
is_public
and
not
current_user
.
role_edit_shelfs
():
if
shelf
.
is_public
and
not
current_user
.
role_edit_shelfs
():
app
.
logger
.
info
(
"User is not allowed to edit public shelves"
)
app
.
logger
.
info
(
"User is not allowed to edit public shelves"
)
return
"User is not allowed to edit public shelves"
,
403
flash
(
_
(
u"User is not allowed to edit public shelves"
),
category
=
"error"
)
return
redirect
(
url_for
(
'index'
))
if
current_user
.
id
in
ub
.
searched_ids
and
ub
.
searched_ids
[
current_user
.
id
]:
if
current_user
.
id
in
ub
.
searched_ids
and
ub
.
searched_ids
[
current_user
.
id
]:
books_for_shelf
=
list
()
books_for_shelf
=
list
()
...
...
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