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
29efcf83
Commit
29efcf83
authored
Sep 23, 2018
by
bodybybuddha
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
https://github.com/janeczku/calibre-web
into 617
parents
b4122e98
ba7c7346
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
231 additions
and
237 deletions
+231
-237
cli.py
cps/cli.py
+4
-0
server.py
cps/server.py
+7
-1
admin.html
cps/templates/admin.html
+4
-4
config_edit.html
cps/templates/config_edit.html
+2
-2
detail.html
cps/templates/detail.html
+4
-2
layout.html
cps/templates/layout.html
+8
-8
register.html
cps/templates/register.html
+1
-5
shelf_edit.html
cps/templates/shelf_edit.html
+1
-1
user_edit.html
cps/templates/user_edit.html
+0
-2
messages.mo
cps/translations/fr/LC_MESSAGES/messages.mo
+0
-0
messages.po
cps/translations/fr/LC_MESSAGES/messages.po
+15
-15
messages.mo
cps/translations/nl/LC_MESSAGES/messages.mo
+0
-0
messages.po
cps/translations/nl/LC_MESSAGES/messages.po
+177
-189
web.py
cps/web.py
+6
-7
worker.py
cps/worker.py
+1
-0
optional-requirements.txt
optional-requirements.txt
+1
-1
No files found.
cps/cli.py
View file @
29efcf83
...
...
@@ -44,5 +44,9 @@ if args.k:
print
(
"Keyfilepath is invalid. Exiting..."
)
sys
.
exit
(
1
)
if
(
args
.
k
and
not
args
.
c
)
or
(
not
args
.
k
and
args
.
c
):
print
(
"Certfile and Keyfile have to be used together. Exiting..."
)
sys
.
exit
(
1
)
if
args
.
k
is
""
:
keyfilepath
=
""
cps/server.py
View file @
29efcf83
...
...
@@ -5,6 +5,8 @@
from
socket
import
error
as
SocketError
import
sys
import
os
import
signal
try
:
from
gevent.pywsgi
import
WSGIServer
from
gevent.pool
import
Pool
...
...
@@ -26,7 +28,8 @@ class server:
restart
=
False
def
__init__
(
self
):
pass
signal
.
signal
(
signal
.
SIGINT
,
self
.
killServer
)
signal
.
signal
(
signal
.
SIGTERM
,
self
.
killServer
)
def
start_gevent
(
self
):
try
:
...
...
@@ -86,6 +89,9 @@ class server:
def
setRestartTyp
(
self
,
starttyp
):
self
.
restart
=
starttyp
def
killServer
(
self
,
signum
,
frame
):
self
.
stopServer
()
def
stopServer
(
self
):
if
gevent_present
:
self
.
wsgiserver
.
close
()
...
...
cps/templates/admin.html
View file @
29efcf83
...
...
@@ -96,8 +96,8 @@
<div
class=
"col-xs-6 col-sm-5"
>
{% if config.config_remote_login %}
<span
class=
"glyphicon glyphicon-ok"
></span>
{% else %}
<span
class=
"glyphicon glyphicon-remove"
></span>
{% endif %}
</div>
</div>
</div>
<div
class=
"btn btn-default"
><a
href=
"{{url_for('configuration')}}"
>
{{_('Basic Configuration')}}
</a></div>
<div
class=
"btn btn-default"
><a
href=
"{{url_for('view_configuration')}}"
>
{{_('UI Configuration')}}
</a></div>
<div
class=
"btn btn-default"
><a
id=
"basic_config"
href=
"{{url_for('configuration')}}"
>
{{_('Basic Configuration')}}
</a></div>
<div
class=
"btn btn-default"
><a
id=
"view_config"
href=
"{{url_for('view_configuration')}}"
>
{{_('UI Configuration')}}
</a></div>
</div>
</div>
...
...
@@ -105,8 +105,8 @@
<div
class=
"col"
>
<h2>
{{_('Administration')}}
</h2>
<div
class=
"btn btn-default"
id=
"restart_database"
>
{{_('Reconnect to Calibre DB')}}
</div>
<div
class=
"btn btn-default"
data-toggle=
"modal"
data-target=
"#RestartDialog"
>
{{_('Restart Calibre-Web')}}
</div>
<div
class=
"btn btn-default"
data-toggle=
"modal"
data-target=
"#ShutdownDialog"
>
{{_('Stop Calibre-Web')}}
</div>
<div
class=
"btn btn-default"
id=
"admin_restart"
data-toggle=
"modal"
data-target=
"#RestartDialog"
>
{{_('Restart Calibre-Web')}}
</div>
<div
class=
"btn btn-default"
id=
"admin_stop"
data-toggle=
"modal"
data-target=
"#ShutdownDialog"
>
{{_('Stop Calibre-Web')}}
</div>
</div>
</div>
...
...
cps/templates/config_edit.html
View file @
29efcf83
...
...
@@ -207,12 +207,12 @@
<div
class=
"col-sm-12"
>
<button
type=
"submit"
class=
"btn btn-default"
>
{{_('Submit')}}
</button>
<button
type=
"submit"
name=
"submit"
class=
"btn btn-default"
>
{{_('Submit')}}
</button>
{% if not origin %}
<a
href=
"{{ url_for('admin') }}"
class=
"btn btn-default"
>
{{_('Back')}}
</a>
{% endif %}
{% if success %}
<a
href=
"{{ url_for('login') }}"
class=
"btn btn-default"
>
{{_('Login')}}
</a>
<a
href=
"{{ url_for('login') }}"
name=
"login"
class=
"btn btn-default"
>
{{_('Login')}}
</a>
{% endif %}
</div>
</form>
...
...
cps/templates/detail.html
View file @
29efcf83
...
...
@@ -174,8 +174,10 @@
{% if entry.comments|length > 0 and entry.comments[0].text|length > 0%}
<h3>
{{_('Description:')}}
</h3>
{{entry.comments[0].text|safe}}
<div
class=
"comments"
>
<h3>
{{_('Description:')}}
</h3>
{{entry.comments[0].text|safe}}
</div>
{% endif %}
...
...
cps/templates/layout.html
View file @
29efcf83
...
...
@@ -122,16 +122,16 @@
<li
id=
"nav_new"
{%
if
page =
=
'
root
'
%}
class=
"active"
{%
endif
%}
><a
href=
"{{url_for('index')}}"
><span
class=
"glyphicon glyphicon-book"
></span>
{{_('Recently Added')}}
</a></li>
{%endif%}
{% if g.user.show_sorted() %}
<li
class=
"dropdown"
>
<li
id=
"nav_sort"
class=
"dropdown"
>
<a
href=
"#"
class=
"dropdown-toggle"
data-toggle=
"dropdown"
role=
"button"
aria-haspopup=
"true"
aria-expanded=
"false"
>
<span
class=
"glyphicon glyphicon-sort-by-attributes"
></span>
{{_('Sorted Books')}}
<span
class=
"caret"
></span>
</a>
<ul
class=
"dropdown-menu"
>
<li
{%
if
page =
=
'
newest
'
%}
class=
"active"
{%
endif
%}
><a
href=
"{{url_for('newest_books')}}"
>
{{_('Sort By')}} {{_('Newest')}}
</a></li>
<li
{%
if
page =
=
'
oldest
'
%}
class=
"active"
{%
endif
%}
><a
href=
"{{url_for('oldest_books')}}"
>
{{_('Sort By')}} {{_('Oldest')}}
</a></li>
<li
{%
if
page =
=
'
a-z
'
%}
class=
"active"
{%
endif
%}
><a
href=
"{{url_for('titles_ascending')}}"
>
{{_('Sort By')}} {{_('Title')}} ({{_('Ascending')}})
</a></li>
<li
{%
if
page =
=
'
z-a
'
%}
class=
"active"
{%
endif
%}
><a
href=
"{{url_for('titles_descending')}}"
>
{{_('Sort By')}} {{_('Title')}} ({{_('Descending')}})
</a></li>
<li
id=
"nav_sort_old"
{%
if
page =
=
'
newest
'
%}
class=
"active"
{%
endif
%}
><a
href=
"{{url_for('newest_books')}}"
>
{{_('Sort By')}} {{_('Newest')}}
</a></li>
<li
id=
"nav_sort_new"
{%
if
page =
=
'
oldest
'
%}
class=
"active"
{%
endif
%}
><a
href=
"{{url_for('oldest_books')}}"
>
{{_('Sort By')}} {{_('Oldest')}}
</a></li>
<li
id=
"nav_sort_asc"
{%
if
page =
=
'
a-z
'
%}
class=
"active"
{%
endif
%}
><a
href=
"{{url_for('titles_ascending')}}"
>
{{_('Sort By')}} {{_('Title')}} ({{_('Ascending')}})
</a></li>
<li
id=
"nav_sort_desc"
{%
if
page =
=
'
z-a
'
%}
class=
"active"
{%
endif
%}
><a
href=
"{{url_for('titles_descending')}}"
>
{{_('Sort By')}} {{_('Title')}} ({{_('Descending')}})
</a></li>
</ul>
</li>
{%endif%}
...
...
@@ -139,13 +139,13 @@
<li
id=
"nav_hot"
{%
if
page =
=
'
hot
'
%}
class=
"active"
{%
endif
%}
><a
href=
"{{url_for('hot_books')}}"
><span
class=
"glyphicon glyphicon-fire"
></span>
{{_('Hot Books')}}
</a></li>
{%endif%}
{% if g.user.show_best_rated_books() %}
<li
{%
if
page =
=
'
rated
'
%}
class=
"active"
{%
endif
%}
><a
href=
"{{url_for('best_rated_books')}}"
><span
class=
"glyphicon glyphicon-star"
></span>
{{_('Best rated Books')}}
</a></li>
<li
id=
"nav_rated"
{%
if
page =
=
'
rated
'
%}
class=
"active"
{%
endif
%}
><a
href=
"{{url_for('best_rated_books')}}"
><span
class=
"glyphicon glyphicon-star"
></span>
{{_('Best rated Books')}}
</a></li>
{%endif%}
{% if g.user.show_read_and_unread() %}
{% if not g.user.is_anonymous %}
<li
{%
if
page =
=
'
read
'
%}
class=
"active"
{%
endif
%}
><a
href=
"{{url_for('read_books')}}"
><span
class=
"glyphicon glyphicon-eye-open"
></span>
{{_('Read Books')}}
</a></li>
<li
id=
"nav_read"
{%
if
page =
=
'
read
'
%}
class=
"active"
{%
endif
%}
><a
href=
"{{url_for('read_books')}}"
><span
class=
"glyphicon glyphicon-eye-open"
></span>
{{_('Read Books')}}
</a></li>
{%endif%}
<li
{%
if
page =
=
'
read
'
%}
class=
"active"
{%
endif
%}
><a
href=
"{{url_for('unread_books')}}"
><span
class=
"glyphicon glyphicon-eye-close"
></span>
{{_('Unread Books')}}
</a></li>
<li
id=
"nav_unread"
{%
if
page =
=
'
read
'
%}
class=
"active"
{%
endif
%}
><a
href=
"{{url_for('unread_books')}}"
><span
class=
"glyphicon glyphicon-eye-close"
></span>
{{_('Unread Books')}}
</a></li>
{%endif%}
{% if g.user.show_random_books() %}
<li
id=
"nav_rand"
{%
if
page =
=
'
discover
'
%}
class=
"active"
{%
endif
%}
><a
href=
"{{url_for('discover')}}"
><span
class=
"glyphicon glyphicon-random"
></span>
{{_('Discover')}}
</a></li>
...
...
cps/templates/register.html
View file @
29efcf83
...
...
@@ -7,15 +7,11 @@
<label
for=
"nickname"
>
{{_('Username')}}
</label>
<input
type=
"text"
class=
"form-control"
id=
"nickname"
name=
"nickname"
placeholder=
"{{_('Choose a username')}}"
required
>
</div>
<!--div class="form-group required">
<label for="password">{{_('Password')}}</label>
<input type="password" class="form-control" id="password" name="password" placeholder="{{_('Choose a password')}}" required>
</div-->
<div
class=
"form-group required"
>
<label
for=
"email"
>
{{_('E-mail address')}}
</label>
<input
type=
"email"
class=
"form-control"
id=
"email"
name=
"email"
placeholder=
"{{_('Your email address')}}"
required
>
</div>
<button
type=
"submit"
class=
"btn btn-primary"
>
{{_('Register')}}
</button>
<button
type=
"submit"
id=
"submit"
class=
"btn btn-primary"
>
{{_('Register')}}
</button>
</form>
</div>
{% if error %}
...
...
cps/templates/shelf_edit.html
View file @
29efcf83
...
...
@@ -14,7 +14,7 @@
</label>
</div>
{% endif %}
<button
type=
"submit"
class=
"btn btn-default"
>
{{_('Submit')}}
</button>
<button
type=
"submit"
class=
"btn btn-default"
id=
"submit"
>
{{_('Submit')}}
</button>
{% if shelf.id != None %}
<a
href=
"{{ url_for('show_shelf', shelf_id=shelf.id) }}"
class=
"btn btn-default"
>
{{_('Back')}}
</a>
{% endif %}
...
...
cps/templates/user_edit.html
View file @
29efcf83
...
...
@@ -22,8 +22,6 @@
<input
type=
"password"
class=
"form-control"
name=
"password"
id=
"password"
value=
""
autocomplete=
"off"
>
</div>
{% endif %}
{% endif %}
<div
class=
"form-group"
>
<label
for=
"kindle_mail"
>
{{_('Kindle E-Mail')}}
</label>
...
...
cps/translations/fr/LC_MESSAGES/messages.mo
View file @
29efcf83
No preview for this file type
cps/translations/fr/LC_MESSAGES/messages.po
View file @
29efcf83
...
...
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
"POT-Creation-Date: 2018-09-
14 21:11
+0200\n"
"PO-Revision-Date: 2018-09-
08 17:48
+0200\n"
"POT-Creation-Date: 2018-09-
23 19:00
+0200\n"
"PO-Revision-Date: 2018-09-
16 00:46
+0200\n"
"Last-Translator: Nicolas Roudninski <nicoroud@gmail.com>\n"
"Language: fr\n"
"Language-Team: \n"
...
...
@@ -120,35 +120,35 @@ msgstr "Inconnu"
#: cps/web.py:1121 cps/web.py:1152
msgid "HTTP Error"
msgstr ""
msgstr "
Erreur HTTP
"
#: cps/web.py:1123 cps/web.py:1154
msgid "Connection error"
msgstr ""
msgstr "
Erreur de connexion
"
#: cps/web.py:1125 cps/web.py:1156
msgid "Timeout while establishing connection"
msgstr ""
msgstr "
Délai d'attente dépassé lors de l'établissement de connexion
"
#: cps/web.py:1127 cps/web.py:1158
msgid "General error"
msgstr ""
msgstr "
Erreur générale
"
#: cps/web.py:1133
msgid "Unexpected data while reading update information"
msgstr ""
msgstr "
Données inattendues lors de la lecture des informations de mise à jour
"
#: cps/web.py:1140
msgid "No update available. You already have the latest version installed"
msgstr ""
msgstr "
Aucune mise à jour disponible. Vous avez déjà la dernière version installée
"
#: cps/web.py:1165
msgid "A new update is available. Click on the button below to update to the latest version."
msgstr ""
msgstr "
Une nouvelle mise à jour est disponible. Cliquez sur le bouton ci-dessous pour charger la dernière version.
"
#: cps/web.py:1215
msgid "Could not fetch update information"
msgstr ""
msgstr "
Impossible d'extraire les informations de mise à jour
"
#: cps/web.py:1230
msgid "Requesting update package"
...
...
@@ -637,7 +637,7 @@ msgstr "Le fichier de couverture n’est pas au format jpg, impossible de sauveg
#: cps/web.py:3554
#, python-format
msgid "%(langname)s is not a valid language"
msgstr ""
msgstr "
%(langname)s n'est pas une langue valide
"
#: cps/web.py:3676
msgid "Error editing book, please check logfile for details"
...
...
@@ -826,19 +826,19 @@ msgstr "Arrêter Calibre-Web"
#: cps/templates/admin.html:115
msgid "Update"
msgstr ""
msgstr "
Mise à jour de Calibre-Web
"
#: cps/templates/admin.html:119
msgid "Version"
msgstr ""
msgstr "
Version
"
#: cps/templates/admin.html:120
msgid "Details"
msgstr ""
msgstr "
Détails
"
#: cps/templates/admin.html:126
msgid "Current version"
msgstr ""
msgstr "
Version actuellement installée
"
#: cps/templates/admin.html:132
msgid "Check for update"
...
...
cps/translations/nl/LC_MESSAGES/messages.mo
View file @
29efcf83
No preview for this file type
cps/translations/nl/LC_MESSAGES/messages.po
View file @
29efcf83
This diff is collapsed.
Click to expand it.
cps/web.py
View file @
29efcf83
...
...
@@ -109,8 +109,8 @@ current_milli_time = lambda: int(round(time.time() * 1000))
gdrive_watch_callback_token
=
'target=calibreweb-watch_files'
EXTENSIONS_UPLOAD
=
{
'txt'
,
'pdf'
,
'epub'
,
'mobi'
,
'azw'
,
'azw3'
,
'cbr'
,
'cbz'
,
'cbt'
,
'djvu'
,
'prc'
,
'doc'
,
'docx'
,
'fb2'
}
EXTENSIONS_CONVERT
=
{
'pdf'
,
'epub'
,
'mobi'
,
'azw3'
,
'docx'
,
'rtf'
,
'fb2'
,
'lit'
,
'lrf'
,
'txt'
}
'fb2'
,
'html'
,
'rtf'
,
'odt'
}
EXTENSIONS_CONVERT
=
{
'pdf'
,
'epub'
,
'mobi'
,
'azw3'
,
'docx'
,
'rtf'
,
'fb2'
,
'lit'
,
'lrf'
,
'txt'
,
'html'
,
'rtf'
,
'odt'
}
# EXTENSIONS_READER = set(['txt', 'pdf', 'epub', 'zip', 'cbz', 'tar', 'cbt'] + (['rar','cbr'] if rar_support else []))
...
...
@@ -591,7 +591,7 @@ def modify_database_object(input_elements, db_book_object, db_object, db_session
new_element
=
db_object
(
add_element
,
add_element
)
elif
db_type
==
'custom'
:
new_element
=
db_object
(
value
=
add_element
)
else
:
# db_type should be tag,
or languages
else
:
# db_type should be tag,
language or publisher
new_element
=
db_object
(
add_element
)
db_session
.
add
(
new_element
)
# add element to book
...
...
@@ -1711,7 +1711,7 @@ def delete_book(book_id, book_format):
modify_database_object
([
u''
],
book
.
tags
,
db
.
Tags
,
db
.
session
,
'tags'
)
modify_database_object
([
u''
],
book
.
series
,
db
.
Series
,
db
.
session
,
'series'
)
modify_database_object
([
u''
],
book
.
languages
,
db
.
Languages
,
db
.
session
,
'languages'
)
modify_database_object
([
u''
],
book
.
publishers
,
db
.
Publishers
,
db
.
session
,
'
serie
s'
)
modify_database_object
([
u''
],
book
.
publishers
,
db
.
Publishers
,
db
.
session
,
'
publisher
s'
)
cc
=
db
.
session
.
query
(
db
.
Custom_Columns
)
.
filter
(
db
.
Custom_Columns
.
datatype
.
notin_
(
db
.
cc_exceptions
))
.
all
()
for
c
in
cc
:
...
...
@@ -3020,7 +3020,8 @@ def configuration_helper(origin):
if
content
.
config_logfile
!=
to_save
[
"config_logfile"
]:
# check valid path, only path or file
if
os
.
path
.
dirname
(
to_save
[
"config_logfile"
]):
if
os
.
path
.
exists
(
os
.
path
.
dirname
(
to_save
[
"config_logfile"
])):
if
os
.
path
.
exists
(
os
.
path
.
dirname
(
to_save
[
"config_logfile"
]))
and
\
os
.
path
.
basename
(
to_save
[
"config_logfile"
])
and
not
os
.
path
.
isdir
(
to_save
[
"config_logfile"
]):
content
.
config_logfile
=
to_save
[
"config_logfile"
]
else
:
ub
.
session
.
commit
()
...
...
@@ -3068,8 +3069,6 @@ def configuration_helper(origin):
gdriveError
=
gdriveError
,
goodreads
=
goodreads_support
,
rarfile_support
=
rar_support
,
title
=
_
(
u"Basic Configuration"
),
page
=
"config"
)
if
reboot_required
:
# ub.session.close()
# ub.engine.dispose()
# stop Server
server
.
Server
.
setRestartTyp
(
True
)
server
.
Server
.
stopServer
()
...
...
cps/worker.py
View file @
29efcf83
...
...
@@ -487,6 +487,7 @@ class WorkerThread(threading.Thread):
datetime
.
now
()
-
self
.
queue
[
self
.
current
][
'starttime'
])
# Enable logging of smtp lib debug output
class
StderrLogger
(
object
):
buffer
=
''
...
...
optional-requirements.txt
View file @
29efcf83
...
...
@@ -15,6 +15,6 @@ six==1.10.0
goodreads
>=0.3.2
python-Levenshtein
>=0.12.0
# other
lxml
==3.7.2
lxml
>=3.8.0
rarfile
>=2.7
natsort
>=2.2.0
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