diff --git a/cps/cli.py b/cps/cli.py
index 5e172626..7f8d9ab3 100644
--- a/cps/cli.py
+++ b/cps/cli.py
@@ -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 = ""
diff --git a/cps/server.py b/cps/server.py
index 37245b42..bf1c1923 100644
--- a/cps/server.py
+++ b/cps/server.py
@@ -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()
diff --git a/cps/templates/admin.html b/cps/templates/admin.html
index 767bdd41..b7d23db1 100644
--- a/cps/templates/admin.html
+++ b/cps/templates/admin.html
@@ -96,8 +96,8 @@
{% if config.config_remote_login %}{% else %}{% endif %}
-
-
+
+
@@ -105,8 +105,8 @@
{{_('Administration')}}
{{_('Reconnect to Calibre DB')}}
-
{{_('Restart Calibre-Web')}}
-
{{_('Stop Calibre-Web')}}
+
{{_('Restart Calibre-Web')}}
+
{{_('Stop Calibre-Web')}}
diff --git a/cps/templates/config_edit.html b/cps/templates/config_edit.html
index 00f78176..b2826b39 100644
--- a/cps/templates/config_edit.html
+++ b/cps/templates/config_edit.html
@@ -207,12 +207,12 @@
diff --git a/cps/templates/detail.html b/cps/templates/detail.html
index 3a7c5f6f..420b98a6 100644
--- a/cps/templates/detail.html
+++ b/cps/templates/detail.html
@@ -174,8 +174,10 @@
{% if entry.comments|length > 0 and entry.comments[0].text|length > 0%}
- {{_('Description:')}}
- {{entry.comments[0].text|safe}}
+
{% endif %}
diff --git a/cps/templates/layout.html b/cps/templates/layout.html
index 634a3426..f821c08b 100644
--- a/cps/templates/layout.html
+++ b/cps/templates/layout.html
@@ -122,16 +122,16 @@
{{_('Recently Added')}}
{%endif%}
{% if g.user.show_sorted() %}
-
+
{{_('Sorted Books')}}
{%endif%}
@@ -139,13 +139,13 @@
{{_('Hot Books')}}
{%endif%}
{% if g.user.show_best_rated_books() %}
- {{_('Best rated Books')}}
+ {{_('Best rated Books')}}
{%endif%}
{% if g.user.show_read_and_unread() %}
{% if not g.user.is_anonymous %}
- {{_('Read Books')}}
+ {{_('Read Books')}}
{%endif%}
- {{_('Unread Books')}}
+ {{_('Unread Books')}}
{%endif%}
{% if g.user.show_random_books() %}
{{_('Discover')}}
diff --git a/cps/templates/register.html b/cps/templates/register.html
index bad6c47d..70bd10c7 100644
--- a/cps/templates/register.html
+++ b/cps/templates/register.html
@@ -7,15 +7,11 @@
-
-
+
{% if error %}
diff --git a/cps/templates/shelf_edit.html b/cps/templates/shelf_edit.html
index 454a7c41..e9bc1523 100644
--- a/cps/templates/shelf_edit.html
+++ b/cps/templates/shelf_edit.html
@@ -14,7 +14,7 @@
{% endif %}
-
+
{% if shelf.id != None %}
{{_('Back')}}
{% endif %}
diff --git a/cps/templates/user_edit.html b/cps/templates/user_edit.html
index 5c6b308e..c3fccc40 100644
--- a/cps/templates/user_edit.html
+++ b/cps/templates/user_edit.html
@@ -22,8 +22,6 @@
{% endif %}
-
-
{% endif %}
diff --git a/cps/translations/fr/LC_MESSAGES/messages.mo b/cps/translations/fr/LC_MESSAGES/messages.mo
index eb048680..15a0d401 100644
Binary files a/cps/translations/fr/LC_MESSAGES/messages.mo and b/cps/translations/fr/LC_MESSAGES/messages.mo differ
diff --git a/cps/translations/fr/LC_MESSAGES/messages.po b/cps/translations/fr/LC_MESSAGES/messages.po
index 44cfaeb1..ba13d27e 100644
--- a/cps/translations/fr/LC_MESSAGES/messages.po
+++ b/cps/translations/fr/LC_MESSAGES/messages.po
@@ -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 \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"
diff --git a/cps/translations/nl/LC_MESSAGES/messages.mo b/cps/translations/nl/LC_MESSAGES/messages.mo
index e01bcc57..aeee84d1 100644
Binary files a/cps/translations/nl/LC_MESSAGES/messages.mo and b/cps/translations/nl/LC_MESSAGES/messages.mo differ
diff --git a/cps/translations/nl/LC_MESSAGES/messages.po b/cps/translations/nl/LC_MESSAGES/messages.po
index 8e786e2c..f2527410 100644
--- a/cps/translations/nl/LC_MESSAGES/messages.po
+++ b/cps/translations/nl/LC_MESSAGES/messages.po
@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre-Web dutch translation by Ed Driesen (GPL V3)\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2018-09-14 21:11+0200\n"
-"PO-Revision-Date: 2017-06-21 20:15+0200\n"
+"POT-Creation-Date: 2018-09-23 19:00+0200\n"
+"PO-Revision-Date: 2018-09-23 13:29+0200\n"
"Last-Translator: \n"
"Language: nl\n"
"Language-Team: ed.driesen@telenet.be\n"
@@ -31,125 +31,125 @@ msgstr "Rechten om uit te voeren ontbreken"
#: cps/helper.py:57
#, python-format
msgid "%(format)s format not found for book id: %(book)d"
-msgstr ""
+msgstr "%(format)s formaat niet gevonden voor boek met id: %(book)d"
#: cps/helper.py:69
#, python-format
msgid "%(format)s not found on Google Drive: %(fn)s"
-msgstr ""
+msgstr "%(format)s niet gevonden op Google Drive: %(fn)s"
#: cps/helper.py:76
#, python-format
msgid "Convert: %(book)s"
-msgstr ""
+msgstr "Converteer: %(book)s"
#: cps/helper.py:79
#, python-format
msgid "Convert to %(format)s: %(book)s"
-msgstr ""
+msgstr "Converteren naar %(format)s: %(book)s"
#: cps/helper.py:86
#, python-format
msgid "%(format)s not found: %(fn)s"
-msgstr ""
+msgstr "%(format)s niet gevonden %(fn)s"
#: cps/helper.py:91
msgid "Calibre-Web test e-mail"
-msgstr ""
+msgstr "Calibre-Web test email"
#: cps/helper.py:92
msgid "Test e-mail"
-msgstr ""
+msgstr "Test email"
#: cps/helper.py:107
msgid "Get Started with Calibre-Web"
-msgstr ""
+msgstr "Aan de slag met Calibre-Web"
#: cps/helper.py:108
#, python-format
msgid "Registration e-mail for user: %(name)s"
-msgstr ""
+msgstr "Registratie email voor gebruiker: %(name)s"
#: cps/helper.py:131 cps/helper.py:141
msgid "Could not find any formats suitable for sending by e-mail"
-msgstr ""
+msgstr "Geen geschikte formaten geschikt voor verzending per email gevonden"
#: cps/helper.py:143 cps/templates/detail.html:44 cps/worker.py:224
msgid "Send to Kindle"
-msgstr "Stuur naar Kindle:"
+msgstr "Stuur naar Kindle"
#: cps/helper.py:144 cps/worker.py:226
#, python-format
msgid "E-mail: %(book)s"
-msgstr ""
+msgstr "Email: %(book)s"
#: cps/helper.py:146
msgid "The requested file could not be read. Maybe wrong permissions?"
-msgstr ""
+msgstr "Het gevraagde bestand kon niet worden gelezen. Misschien niet de juiste permissies?"
#: cps/helper.py:241
#, python-format
msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s"
-msgstr ""
+msgstr "Hernoemen van titel: '%(src)s' naar '%(dest)s' faade met fout: %(error)s"
#: cps/helper.py:250
#, python-format
msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s"
-msgstr ""
+msgstr "Hernoemen van de auteur: '%(src)s' naar '%(dest)s' faalde met fout: %(error)s"
#: cps/helper.py:272 cps/helper.py:281
#, python-format
msgid "File %(file)s not found on Google Drive"
-msgstr ""
+msgstr "Bestand %(file)s niet gevonden op Google Drive"
#: cps/helper.py:299
#, python-format
msgid "Book path %(path)s not found on Google Drive"
-msgstr ""
+msgstr "Boek pad %(path)s niet gevonden op Google Drive"
#: cps/helper.py:544
msgid "Error excecuting UnRar"
-msgstr ""
+msgstr "Fout bij het uitvoeren van UnRar"
#: cps/helper.py:546
msgid "Unrar binary file not found"
-msgstr ""
+msgstr "Unrar uitvoeringsbestand niet gevonden"
#: cps/web.py:1112 cps/web.py:2778
msgid "Unknown"
-msgstr ""
+msgstr "Onbekend"
#: cps/web.py:1121 cps/web.py:1152
msgid "HTTP Error"
-msgstr ""
+msgstr "HTTP fout"
#: cps/web.py:1123 cps/web.py:1154
msgid "Connection error"
-msgstr ""
+msgstr "Verbindingsfout"
#: cps/web.py:1125 cps/web.py:1156
msgid "Timeout while establishing connection"
-msgstr ""
+msgstr "Time-out bij het maken van de verbinding"
#: cps/web.py:1127 cps/web.py:1158
msgid "General error"
-msgstr ""
+msgstr "Algemene fout"
#: cps/web.py:1133
msgid "Unexpected data while reading update information"
-msgstr ""
+msgstr "Onverwachte data tijdens het lezen van de update informatie"
#: cps/web.py:1140
msgid "No update available. You already have the latest version installed"
-msgstr ""
+msgstr "Geen update beschikbaar. Je hebt reeds de laatste versie geïnstalleerd"
#: cps/web.py:1165
msgid "A new update is available. Click on the button below to update to the latest version."
-msgstr ""
+msgstr "Een nieuwe update is beschikbaar. Click op de knop hier onder op te updaten naar de laatste versie."
#: cps/web.py:1215
msgid "Could not fetch update information"
-msgstr ""
+msgstr "De update informatie kon niet gelezen worden"
#: cps/web.py:1230
msgid "Requesting update package"
@@ -248,7 +248,7 @@ msgstr "Categorie: %(name)s"
#: cps/templates/layout.html:71 cps/web.py:1651
msgid "Tasks"
-msgstr ""
+msgstr "Taken"
#: cps/web.py:1681
msgid "Statistics"
@@ -256,7 +256,7 @@ msgstr "Statistieken"
#: cps/web.py:1786
msgid "Callback domain is not verified, please follow steps to verify domain in google developer console"
-msgstr ""
+msgstr "Het callback domein is niet geverifieerd, volg de stappen in de google ontwikkelaars console om het domein te verifiëren"
#: cps/web.py:1861
msgid "Server restarted, please reload page"
@@ -272,21 +272,21 @@ msgstr "Update voltooid"
#: cps/web.py:1953
msgid "Published after "
-msgstr ""
+msgstr "Gepubliceerd na "
#: cps/web.py:1960
msgid "Published before "
-msgstr ""
+msgstr "Gepubliceerd voor "
#: cps/web.py:1974
#, python-format
msgid "Rating <= %(rating)s"
-msgstr ""
+msgstr "Waardering <= %(rating)s"
#: cps/web.py:1976
#, python-format
msgid "Rating >= %(rating)s"
-msgstr ""
+msgstr "Waardering >= %(rating)s"
#: cps/web.py:2035 cps/web.py:2044
msgid "search"
@@ -317,19 +317,19 @@ msgstr "registreer"
#: cps/web.py:2265 cps/web.py:3345
msgid "An unknown error occurred. Please try again later."
-msgstr ""
+msgstr "Er was een onbekende fout. Gelieve later nog eens te proberen."
#: cps/web.py:2268
msgid "Your e-mail is not allowed to register"
-msgstr ""
+msgstr "Het is niet toegestaan om te registreren met jou email"
#: cps/web.py:2271
msgid "Confirmation e-mail was send to your e-mail account."
-msgstr ""
+msgstr "Bevestigings email werd verzonden naar jou email account."
#: cps/web.py:2274
msgid "This username or e-mail address is already in use."
-msgstr ""
+msgstr "Deze gebruikersnaam of email adres is reeds in gebruik."
#: cps/web.py:2291 cps/web.py:2387
#, python-format
@@ -363,7 +363,7 @@ msgstr "Gelieve de SMTP mail instellingen eerst te configureren..."
#: cps/web.py:2405
#, python-format
msgid "Book successfully queued for sending to %(kindlemail)s"
-msgstr ""
+msgstr "Boek met succes in de wachtrij geplaatst om te verzenden naar %(kindlemail)s"
#: cps/web.py:2409
#, python-format
@@ -372,7 +372,7 @@ msgstr "Er trad een fout op bij het versturen van dit boek: %(res)s"
#: cps/web.py:2411 cps/web.py:3183
msgid "Please configure your kindle e-mail address first..."
-msgstr ""
+msgstr "Gelieve eerst je kindle mailadres te configureren..."
#: cps/web.py:2455
#, python-format
@@ -381,31 +381,31 @@ msgstr "Boek werd toegevoegd aan boekenplank: %(sname)s"
#: cps/web.py:2466
msgid "Invalid shelf specified"
-msgstr ""
+msgstr "Ongeldige boekenplank gespecificeerd"
#: cps/web.py:2471
#, python-format
msgid "You are not allowed to add a book to the the shelf: %(name)s"
-msgstr ""
+msgstr "Jij mag geen boeken plaatsen op boekenplank: %(name)s"
#: cps/web.py:2476
msgid "User is not allowed to edit public shelves"
-msgstr ""
+msgstr "Gebruiker is niet toegestaan om publieke boekenplanken te bewerken"
#: cps/web.py:2494
#, python-format
msgid "Books are already part of the shelf: %(name)s"
-msgstr ""
+msgstr "Deze boeken maken reeds deel uit van boekenplank: %(name)s"
#: cps/web.py:2508
#, python-format
msgid "Books have been added to shelf: %(sname)s"
-msgstr ""
+msgstr "De boeken werden toegevoegd aan boekenplank: %(sname)s"
#: cps/web.py:2510
#, python-format
msgid "Could not add books to shelf: %(sname)s"
-msgstr ""
+msgstr "Kon geen boeken toevoegen aan boekenplank: %(sname)s"
#: cps/web.py:2547
#, python-format
@@ -415,7 +415,7 @@ msgstr "Boek werd verwijderd van boekenplank: %(sname)s"
#: cps/web.py:2553
#, python-format
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
-msgstr ""
+msgstr "Sorry, jij mag geen boeken verwijderen van deze boekenplank: %(sname)s"
#: cps/web.py:2573 cps/web.py:2597
#, python-format
@@ -447,7 +447,7 @@ msgstr "Bewerk een boekenplank"
#: cps/web.py:2632
#, python-format
msgid "successfully deleted shelf %(name)s"
-msgstr "Boekenplank %(name)s succesvol gewist"
+msgstr "boekenplank %(name)s succesvol gewist"
#: cps/web.py:2659
#, python-format
@@ -465,7 +465,7 @@ msgstr "Verander volgorde van Boekenplank: '%(name)s'"
#: cps/web.py:2722 cps/web.py:3135
msgid "E-mail is not from valid domain"
-msgstr ""
+msgstr "Email is niet van een geldig domein"
#: cps/web.py:2724 cps/web.py:2765 cps/web.py:2768
#, python-format
@@ -474,7 +474,7 @@ msgstr "%(name)s's profiel"
#: cps/web.py:2763
msgid "Found an existing account for this e-mail address."
-msgstr ""
+msgstr "Een bestaand account met dit email adres werd gevonden."
#: cps/web.py:2766
msgid "Profile updated"
@@ -490,19 +490,19 @@ msgstr "Calibre-Web configuratie aangepast"
#: cps/templates/admin.html:100 cps/web.py:2885
msgid "UI Configuration"
-msgstr ""
+msgstr "Gebruikersinterface configuratie"
#: cps/web.py:2903
msgid "Import of optional Google Drive requirements missing"
-msgstr ""
+msgstr "De import van optionele Google Drive vereisten ontbreken"
#: cps/web.py:2906
msgid "client_secrets.json is missing or not readable"
-msgstr ""
+msgstr "client_secrets.json ontbreekt of is niet leesbaar"
#: cps/web.py:2911 cps/web.py:2938
msgid "client_secrets.json is not configured for web application"
-msgstr ""
+msgstr "client_secrets.json is niet geconfigureerd voor web applicaties"
#: cps/templates/admin.html:99 cps/web.py:2941 cps/web.py:2967 cps/web.py:2979
#: cps/web.py:3021 cps/web.py:3036 cps/web.py:3053 cps/web.py:3060
@@ -512,15 +512,15 @@ msgstr "Basis configuratie"
#: cps/web.py:2964
msgid "Keyfile location is not valid, please enter correct path"
-msgstr ""
+msgstr "Sleutelbestand (\"keyfile\") locatie ongeldig, gelieve het correcte pad in te geven"
#: cps/web.py:2976
msgid "Certfile location is not valid, please enter correct path"
-msgstr ""
+msgstr "Certificatiebestand (\"certfile\") locatie ongeldig, gelieve het correcte pad in te geven"
#: cps/web.py:3018
msgid "Logfile location is not valid, please enter correct path"
-msgstr ""
+msgstr "Log bestand (\"logfile\") locatie ongeldig, gelieve het correcte pad in te geven"
#: cps/web.py:3057
msgid "DB location is not valid, please enter correct path"
@@ -537,25 +537,25 @@ msgstr "Gebruiker '%(user)s' aangemaakt"
#: cps/web.py:3147
msgid "Found an existing account for this e-mail address or nickname."
-msgstr ""
+msgstr "Een bestaande account gevonden met dit email adres of gebruikersnaam."
#: cps/web.py:3171 cps/web.py:3185
msgid "E-mail server settings updated"
-msgstr ""
+msgstr "Email server instellingen aangepast"
#: cps/web.py:3178
#, python-format
msgid "Test e-mail successfully send to %(kindlemail)s"
-msgstr ""
+msgstr "Test email met succes verzonden naar %(kindlemail)s"
#: cps/web.py:3181
#, python-format
msgid "There was an error sending the Test e-mail: %(res)s"
-msgstr ""
+msgstr "Er was een fout bij het verzenden van test email: %(res)s"
#: cps/web.py:3186
msgid "Edit e-mail server settings"
-msgstr ""
+msgstr "Bewerk email server instellingen"
#: cps/web.py:3211
#, python-format
@@ -574,12 +574,12 @@ msgstr "Een onbekende fout deed zich voor."
#: cps/web.py:3325
#, python-format
msgid "Edit User %(nick)s"
-msgstr "Bewerk gebruiker '%(nick)s'"
+msgstr "Bewerk gebruiker '%(nick)s"
#: cps/web.py:3342
#, python-format
msgid "Password for user %(user)s reset"
-msgstr ""
+msgstr "Wachtwoord voor gebruiker %(user)s gereset"
#: cps/web.py:3362
msgid "Error opening eBook. File does not exist or file is not accessible"
@@ -587,7 +587,7 @@ msgstr "Fout bij openen eBook. Het bestand bestaat niet of is niet toegankelijk"
#: cps/web.py:3390 cps/web.py:3667 cps/web.py:3672 cps/web.py:3827
msgid "edit metadata"
-msgstr "Bewerk metadata"
+msgstr "bewerk metadata"
#: cps/web.py:3401 cps/web.py:3697
#, python-format
@@ -611,21 +611,21 @@ msgstr "Bestand opslaan niet gelukt voor %(file)s."
#: cps/web.py:3438
#, python-format
msgid "File format %(ext)s added to %(book)s"
-msgstr ""
+msgstr "Bestandsformaat %(ext)s toegevoegd aan %(book)s"
#: cps/web.py:3455
#, python-format
msgid "Failed to create path for cover %(path)s (Permission denied)."
-msgstr ""
+msgstr "Het pad %(path)s aanmaken voor boekomslag is mislukt (Geen toestemming)."
#: cps/web.py:3462
#, python-format
msgid "Failed to store cover-file %(cover)s."
-msgstr ""
+msgstr "Boekomslag %(cover)s opslaan mislukt."
#: cps/web.py:3465
msgid "Cover-file is not a valid image file"
-msgstr ""
+msgstr "Boekomslag bestand is geen geldig beeldbestand"
#: cps/web.py:3482 cps/web.py:3486
msgid "unknown"
@@ -633,16 +633,16 @@ msgstr "onbekend"
#: cps/web.py:3508
msgid "Cover is not a jpg file, can't save"
-msgstr ""
+msgstr "Boekomslag is geen jpg bestand, opslaan niet mogelijk"
#: cps/web.py:3554
#, python-format
msgid "%(langname)s is not a valid language"
-msgstr ""
+msgstr "%(langname)s is geen geldige taal"
#: cps/web.py:3676
msgid "Error editing book, please check logfile for details"
-msgstr ""
+msgstr "Fout bij het bewerken van het boek, gelieve logfile controleren"
#: cps/web.py:3726
#, python-format
@@ -657,35 +657,35 @@ msgstr "Bestand %(file)s wissen mislukt (Geen toestemming)."
#: cps/web.py:3813
#, python-format
msgid "File %(file)s uploaded"
-msgstr ""
+msgstr "Bestand %(file)s geüpload"
#: cps/web.py:3843
msgid "Source or destination format for conversion missing"
-msgstr ""
+msgstr "Bron of doel formaat voor conversie ontbreekt"
#: cps/web.py:3853
#, python-format
msgid "Book successfully queued for converting to %(book_format)s"
-msgstr ""
+msgstr "Boek succesvol in de wachtrij geplaatst voor conversie naar %(book_format)s"
#: cps/web.py:3857
#, python-format
msgid "There was an error converting this book: %(res)s"
-msgstr ""
+msgstr "Er trad een fout op bij het converteren van dit boek: %(res)s"
#: cps/worker.py:215 cps/worker.py:398
msgid "Started"
-msgstr ""
+msgstr "Gestart"
#: cps/worker.py:251
#, python-format
msgid "Convertertool %(converter)s not found"
-msgstr ""
+msgstr "Converteer tool %(converter)s niet gevonden"
#: cps/worker.py:287
#, python-format
msgid "Ebook-converter failed: %(error)s"
-msgstr ""
+msgstr "Ebook conversie mislukt: %(error)s"
#: cps/worker.py:298
#, python-format
@@ -694,19 +694,19 @@ msgstr "Kindlegen gefaald met Error %(error)s. Bericht: %(message)s"
#: cps/worker.py:355 cps/worker.py:374
msgid "Waiting"
-msgstr ""
+msgstr "Wachten"
#: cps/worker.py:362
msgid "This e-mail has been sent via Calibre-Web."
-msgstr ""
+msgstr "Deze email werd verzonden via Calibre-Web."
#: cps/worker.py:388 cps/worker.py:484
msgid "Finished"
-msgstr ""
+msgstr "Voltooid"
#: cps/worker.py:476
msgid "Failed"
-msgstr ""
+msgstr "Mislukt"
#: cps/templates/admin.html:6
msgid "User list"
@@ -718,7 +718,7 @@ msgstr "Gebruikersnaam"
#: cps/templates/admin.html:10
msgid "E-mail"
-msgstr ""
+msgstr "Email"
#: cps/templates/admin.html:11
msgid "Kindle"
@@ -747,7 +747,7 @@ msgstr "Bewerk"
#: cps/templates/admin.html:39
msgid "SMTP e-mail server settings"
-msgstr ""
+msgstr "SMTP email server instellingen"
#: cps/templates/admin.html:42 cps/templates/email_edit.html:11
msgid "SMTP hostname"
@@ -783,7 +783,7 @@ msgstr "Calibre DB map"
#: cps/templates/admin.html:69
msgid "Log level"
-msgstr ""
+msgstr "Log niveau"
#: cps/templates/admin.html:73
msgid "Port"
@@ -799,7 +799,7 @@ msgstr "Aan het uploaden"
#: cps/templates/admin.html:87
msgid "Anonymous browsing"
-msgstr ""
+msgstr "Anoniem verkennen"
#: cps/templates/admin.html:91
msgid "Public registration"
@@ -827,19 +827,19 @@ msgstr "Stop Calibre-Web"
#: cps/templates/admin.html:115
msgid "Update"
-msgstr ""
+msgstr "Update"
#: cps/templates/admin.html:119
msgid "Version"
-msgstr ""
+msgstr "Versie"
#: cps/templates/admin.html:120
msgid "Details"
-msgstr ""
+msgstr "Details"
#: cps/templates/admin.html:126
msgid "Current version"
-msgstr ""
+msgstr "Huidige versie"
#: cps/templates/admin.html:132
msgid "Check for update"
@@ -893,7 +893,7 @@ msgstr "Wis boek"
#: cps/templates/book_edit.html:19
msgid "Delete formats:"
-msgstr ""
+msgstr "Wis formaten:"
#: cps/templates/book_edit.html:22 cps/templates/book_edit.html:199
#: cps/templates/email_edit.html:73 cps/templates/email_edit.html:74
@@ -902,23 +902,23 @@ msgstr "Wis"
#: cps/templates/book_edit.html:30
msgid "Convert book format:"
-msgstr ""
+msgstr "Converteer boek formaat:"
#: cps/templates/book_edit.html:34
msgid "Convert from:"
-msgstr ""
+msgstr "Converteer van:"
#: cps/templates/book_edit.html:36 cps/templates/book_edit.html:43
msgid "select an option"
-msgstr ""
+msgstr "selecteer een optie"
#: cps/templates/book_edit.html:41
msgid "Convert to:"
-msgstr ""
+msgstr "Converteer naar:"
#: cps/templates/book_edit.html:50
msgid "Convert book"
-msgstr ""
+msgstr "Converteer boek"
#: cps/templates/book_edit.html:59 cps/templates/search_form.html:6
msgid "Book Title"
@@ -953,11 +953,11 @@ msgstr "Beoordeling"
#: cps/templates/book_edit.html:87
msgid "Cover URL (jpg, cover is downloaded and stored in database, field is afterwards empty again)"
-msgstr ""
+msgstr "Boekomslag URL (jpg, omslag wordt gedownload en opgeslagen in database, invulveld is nadien terug leeg)"
#: cps/templates/book_edit.html:91
msgid "Upload Cover from local drive"
-msgstr ""
+msgstr "Upload cover van lokale schijf"
#: cps/templates/book_edit.html:96 cps/templates/detail.html:131
msgid "Publishing date"
@@ -1018,7 +1018,7 @@ msgstr "Zoekwoord"
#: cps/templates/book_edit.html:216
msgid " Search keyword "
-msgstr "Zoek voor zoekwoord"
+msgstr " Zoek sleutelwoord "
#: cps/templates/book_edit.html:218 cps/templates/layout.html:46
msgid "Go!"
@@ -1046,11 +1046,11 @@ msgstr "Zoek fout!"
#: cps/templates/book_edit.html:276
msgid "No Result(s) found! Please try aonther keyword."
-msgstr ""
+msgstr "Geen resultaten gevonden! Gebruik alsjeblieft een ander sleutelwoord."
#: cps/templates/config_edit.html:12
msgid "Library Configuration"
-msgstr ""
+msgstr "Bibliotheek configuratie"
#: cps/templates/config_edit.html:19
msgid "Location of Calibre database"
@@ -1062,19 +1062,19 @@ msgstr "Google Drive gebruiken?"
#: cps/templates/config_edit.html:30
msgid "Google Drive config problem"
-msgstr ""
+msgstr "Google Drive configuratie probleem"
#: cps/templates/config_edit.html:36
msgid "Authenticate Google Drive"
-msgstr ""
+msgstr "Verifieer Google Drive"
#: cps/templates/config_edit.html:40
msgid "Please finish Google Drive setup after login"
-msgstr ""
+msgstr "Gelieve Google Drive setup te voltooien na login"
#: cps/templates/config_edit.html:44
msgid "Google Drive Calibre folder"
-msgstr ""
+msgstr "Google Drive Calibre folder"
#: cps/templates/config_edit.html:52
msgid "Metadata Watch Channel ID"
@@ -1082,11 +1082,11 @@ msgstr "Metadata Watch Channel ID"
#: cps/templates/config_edit.html:55
msgid "Revoke"
-msgstr ""
+msgstr "Terugtrekken"
#: cps/templates/config_edit.html:73
msgid "Server Configuration"
-msgstr ""
+msgstr "Server configuratie"
#: cps/templates/config_edit.html:80
msgid "Server Port"
@@ -1094,15 +1094,15 @@ msgstr "Server poort"
#: cps/templates/config_edit.html:84
msgid "SSL certfile location (leave it empty for non-SSL Servers)"
-msgstr ""
+msgstr "SSL certificaat (\"certfile\") bestand locatie (laat leeg voor niet-SSL servers)"
#: cps/templates/config_edit.html:88
msgid "SSL Keyfile location (leave it empty for non-SSL Servers)"
-msgstr ""
+msgstr "SSL sleutel (\"keyfile\") bestand (laat leeg voor niet-SSL servers)"
#: cps/templates/config_edit.html:99
msgid "Logfile Configuration"
-msgstr ""
+msgstr "Logbestand configuratie"
#: cps/templates/config_edit.html:106
msgid "Log Level"
@@ -1110,11 +1110,11 @@ msgstr "Log niveau"
#: cps/templates/config_edit.html:115
msgid "Location and name of logfile (calibre-web.log for no entry)"
-msgstr ""
+msgstr "Locatie en naam van logbestand (calibre-web.log indien leeg)"
#: cps/templates/config_edit.html:126
msgid "Feature Configuration"
-msgstr ""
+msgstr "Voorzieningen configuratie"
#: cps/templates/config_edit.html:134
msgid "Enable uploading"
@@ -1150,31 +1150,31 @@ msgstr "Goodreads API geheim"
#: cps/templates/config_edit.html:173
msgid "External binaries"
-msgstr ""
+msgstr "Externe bibliotheken"
#: cps/templates/config_edit.html:181
msgid "No converter"
-msgstr ""
+msgstr "Geen conversie programma"
#: cps/templates/config_edit.html:183
msgid "Use Kindlegen"
-msgstr ""
+msgstr "Gebruik Kindlegen"
#: cps/templates/config_edit.html:185
msgid "Use calibre's ebook converter"
-msgstr ""
+msgstr "Gebruik calibre's ebook converter"
#: cps/templates/config_edit.html:189
msgid "E-Book converter settings"
-msgstr ""
+msgstr "E-book conversie instellingen"
#: cps/templates/config_edit.html:193
msgid "Path to convertertool"
-msgstr ""
+msgstr "Pad naar conversietool"
#: cps/templates/config_edit.html:199
msgid "Location of Unrar binary"
-msgstr ""
+msgstr "Locatie van Unrar programma"
#: cps/templates/config_edit.html:215 cps/templates/layout.html:82
#: cps/templates/login.html:4
@@ -1183,7 +1183,7 @@ msgstr "Login"
#: cps/templates/config_view_edit.html:12
msgid "View Configuration"
-msgstr ""
+msgstr "Bekijk Configuratie"
#: cps/templates/config_view_edit.html:19 cps/templates/layout.html:133
#: cps/templates/layout.html:134 cps/templates/shelf_edit.html:7
@@ -1200,7 +1200,7 @@ msgstr "Reguliere expressie om kolommen te negeren"
#: cps/templates/config_view_edit.html:35
msgid "Link read/unread status to Calibre column"
-msgstr ""
+msgstr "Koppel gelezen/ongelezen status aan Calibre kolom"
#: cps/templates/config_view_edit.html:44
msgid "Regular expression for title sorting"
@@ -1244,7 +1244,7 @@ msgstr "Publieke boekenplanken bewerken toestaan"
#: cps/templates/config_view_edit.html:104
msgid "Default visibilities for new users"
-msgstr ""
+msgstr "Standaard zichtbaar voor nieuwe gebruikers"
#: cps/templates/config_view_edit.html:112 cps/templates/user_edit.html:60
msgid "Show random books"
@@ -1252,11 +1252,11 @@ msgstr "Toon willekeurige boeken"
#: cps/templates/config_view_edit.html:116 cps/templates/user_edit.html:64
msgid "Show recent books"
-msgstr ""
+msgstr "Toon recente boeken"
#: cps/templates/config_view_edit.html:120 cps/templates/user_edit.html:68
msgid "Show sorted books"
-msgstr ""
+msgstr "Toon gesorteerde boeken"
#: cps/templates/config_view_edit.html:124 cps/templates/user_edit.html:72
msgid "Show hot books"
@@ -1364,23 +1364,23 @@ msgstr "Bewaar instellingen en stuur test email"
#: cps/templates/email_edit.html:43
msgid "Allowed domains for registering"
-msgstr ""
+msgstr "Toegelaten domeinen voor registratie"
#: cps/templates/email_edit.html:47
msgid "Enter domainname"
-msgstr ""
+msgstr "Voer domeinnaam in"
#: cps/templates/email_edit.html:55
msgid "Add Domain"
-msgstr ""
+msgstr "Voeg Domein toe"
#: cps/templates/email_edit.html:58
msgid "Add"
-msgstr ""
+msgstr "Voeg toe"
#: cps/templates/email_edit.html:72
msgid "Do you really want to delete this domain rule?"
-msgstr ""
+msgstr "Wil je werkelijk deze domein regel verwijderen?"
#: cps/templates/feed.xml:21 cps/templates/layout.html:205
msgid "Next"
@@ -1449,7 +1449,7 @@ msgstr "Publieke Boekenplanken"
#: cps/templates/index.xml:84
msgid "Books organized in public shelfs, visible to everyone"
-msgstr ""
+msgstr "Boeken georganiseerd in publieke boekenplanken, zichtbaar voor iedereen"
#: cps/templates/index.xml:88 cps/templates/layout.html:170
msgid "Your Shelves"
@@ -1457,7 +1457,7 @@ msgstr "Jou Boekenplanken"
#: cps/templates/index.xml:92
msgid "User's own shelfs, only visible to the current user himself"
-msgstr ""
+msgstr "Eigen boekenplanken, enkel zichtbaar voor de huidige gebruiker zelf"
#: cps/templates/layout.html:33
msgid "Toggle navigation"
@@ -1477,11 +1477,11 @@ msgstr "Registreer"
#: cps/templates/layout.html:108
msgid "Uploading..."
-msgstr ""
+msgstr "Aan het uploaden..."
#: cps/templates/layout.html:109
msgid "please don't refresh the page"
-msgstr ""
+msgstr "gelieve de pagina niet te herladen"
#: cps/templates/layout.html:120
msgid "Browse"
@@ -1564,7 +1564,7 @@ msgstr "Inloggen met magische koppeling"
#: cps/templates/osd.xml:5
msgid "Calibre-Web ebook catalog"
-msgstr ""
+msgstr "Calibre-Web ebook cataloog"
#: cps/templates/read.html:69 cps/templates/readcbr.html:79
#: cps/templates/readcbr.html:103
@@ -1577,91 +1577,91 @@ msgstr "Herschuif tekst waneer het zijpaneel open staat."
#: cps/templates/readcbr.html:84
msgid "Keyboard Shortcuts"
-msgstr ""
+msgstr "Sneltoetsen"
#: cps/templates/readcbr.html:87
msgid "Previous Page"
-msgstr ""
+msgstr "Vorige Pagina"
#: cps/templates/readcbr.html:88
msgid "Next Page"
-msgstr ""
+msgstr "Volgende Pagina"
#: cps/templates/readcbr.html:89
msgid "Scale to Best"
-msgstr ""
+msgstr "Optimaal schalen"
#: cps/templates/readcbr.html:90
msgid "Scale to Width"
-msgstr ""
+msgstr "Schalen naar breedte"
#: cps/templates/readcbr.html:91
msgid "Scale to Height"
-msgstr ""
+msgstr "Schalen naar hoogte"
#: cps/templates/readcbr.html:92
msgid "Scale to Native"
-msgstr ""
+msgstr "Schalen op ware grootte"
#: cps/templates/readcbr.html:93
msgid "Rotate Right"
-msgstr ""
+msgstr "Draai rechtsom"
#: cps/templates/readcbr.html:94
msgid "Rotate Left"
-msgstr ""
+msgstr "Draai linksom"
#: cps/templates/readcbr.html:95
msgid "Flip Image"
-msgstr ""
+msgstr "Keer beeld om"
#: cps/templates/readcbr.html:108 cps/templates/user_edit.html:41
msgid "Theme"
-msgstr ""
+msgstr "Thema"
#: cps/templates/readcbr.html:111
msgid "Light"
-msgstr ""
+msgstr "Licht"
#: cps/templates/readcbr.html:112
msgid "Dark"
-msgstr ""
+msgstr "Donker"
#: cps/templates/readcbr.html:117
msgid "Scale"
-msgstr ""
+msgstr "Schaal"
#: cps/templates/readcbr.html:120
msgid "Best"
-msgstr ""
+msgstr "Beste"
#: cps/templates/readcbr.html:121
msgid "Width"
-msgstr ""
+msgstr "Breedte"
#: cps/templates/readcbr.html:122
msgid "Height"
-msgstr ""
+msgstr "Hoogte"
#: cps/templates/readcbr.html:123
msgid "Native"
-msgstr ""
+msgstr "Ware grootte"
#: cps/templates/readcbr.html:128
msgid "Rotate"
-msgstr ""
+msgstr "Draai"
#: cps/templates/readcbr.html:139
msgid "Flip"
-msgstr ""
+msgstr "Keer"
#: cps/templates/readcbr.html:142
msgid "Horizontal"
-msgstr ""
+msgstr "Horizontaal"
#: cps/templates/readcbr.html:143
msgid "Vertical"
-msgstr ""
+msgstr "Verticaal"
#: cps/templates/readpdf.html:29
msgid "PDF.js viewer"
@@ -1685,7 +1685,7 @@ msgstr "Kies een wachtwoord"
#: cps/templates/register.html:15 cps/templates/user_edit.html:13
msgid "E-mail address"
-msgstr ""
+msgstr "Email adres"
#: cps/templates/register.html:16
msgid "Your email address"
@@ -1717,11 +1717,11 @@ msgstr "Resultaten voor:"
#: cps/templates/search_form.html:19
msgid "Publishing date from"
-msgstr ""
+msgstr "Publicatie datum van"
#: cps/templates/search_form.html:26
msgid "Publishing date to"
-msgstr ""
+msgstr "Publicatie datum tot"
#: cps/templates/search_form.html:43
msgid "Exclude Tags"
@@ -1737,11 +1737,11 @@ msgstr "Sluit Talen uit"
#: cps/templates/search_form.html:97
msgid "Rating bigger than"
-msgstr ""
+msgstr "Waardering meer dan"
#: cps/templates/search_form.html:101
msgid "Rating less than"
-msgstr ""
+msgstr "Waardering minder dan"
#: cps/templates/shelf.html:7
msgid "Delete this Shelf"
@@ -1749,7 +1749,7 @@ msgstr "Wis deze boekenplank"
#: cps/templates/shelf.html:8
msgid "Edit Shelf"
-msgstr ""
+msgstr "Bewerk Boekenplank"
#: cps/templates/shelf.html:9 cps/templates/shelf_order.html:11
msgid "Change order"
@@ -1805,43 +1805,43 @@ msgstr "Geïnstalleerde versie"
#: cps/templates/tasks.html:7
msgid "Tasks list"
-msgstr ""
+msgstr "Taaklijst"
#: cps/templates/tasks.html:12
msgid "User"
-msgstr ""
+msgstr "Gebruiker"
#: cps/templates/tasks.html:14
msgid "Task"
-msgstr ""
+msgstr "Taak"
#: cps/templates/tasks.html:15
msgid "Status"
-msgstr ""
+msgstr "Status"
#: cps/templates/tasks.html:16
msgid "Progress"
-msgstr ""
+msgstr "Vooruitgang"
#: cps/templates/tasks.html:17
msgid "Runtime"
-msgstr ""
+msgstr "Looptijd"
#: cps/templates/tasks.html:18
msgid "Starttime"
-msgstr ""
+msgstr "Start tijd"
#: cps/templates/tasks.html:24
msgid "Delete finished tasks"
-msgstr ""
+msgstr "Verwijder voltooide taken"
#: cps/templates/tasks.html:25
msgid "Hide all tasks"
-msgstr ""
+msgstr "Verberg alle taken"
#: cps/templates/user_edit.html:18
msgid "Reset user Password"
-msgstr ""
+msgstr "Reset gebruikers wachtwoord"
#: cps/templates/user_edit.html:29
msgid "Kindle E-Mail"
@@ -1849,11 +1849,11 @@ msgstr "Kindle email"
#: cps/templates/user_edit.html:43
msgid "Standard Theme"
-msgstr ""
+msgstr "Standaard thema"
#: cps/templates/user_edit.html:44
msgid "caliBlur! Dark Theme (Beta)"
-msgstr ""
+msgstr "caliBlur! Donker Thema (Beta)"
#: cps/templates/user_edit.html:49
msgid "Show books with language"
@@ -1880,18 +1880,6 @@ msgstr "Recente Downloads"
#~ msgid "%s: %s"
#~ msgstr ""
-#~ msgid "E-Mail: %(book)s"
-#~ msgstr ""
-
-#~ msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s"
-#~ msgstr ""
-
-#~ msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s"
-#~ msgstr ""
-
-#~ msgid "Password for user %(user)s reset"
-#~ msgstr ""
-
#~ msgid "Password for user %s reset"
#~ msgstr ""
diff --git a/cps/web.py b/cps/web.py
index d4f79b88..3c70bc70 100644
--- a/cps/web.py
+++ b/cps/web.py
@@ -108,8 +108,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
@@ -1703,7 +1703,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, 'series')
+ modify_database_object([u''], book.publishers, db.Publishers, db.session, 'publishers')
cc = db.session.query(db.Custom_Columns).filter(db.Custom_Columns.datatype.notin_(db.cc_exceptions)).all()
for c in cc:
@@ -3012,7 +3012,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()
@@ -3060,8 +3061,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()
diff --git a/cps/worker.py b/cps/worker.py
index 0eca51c1..02ca742f 100644
--- a/cps/worker.py
+++ b/cps/worker.py
@@ -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 = ''
diff --git a/optional-requirements.txt b/optional-requirements.txt
index 22accfc1..154612b3 100644
--- a/optional-requirements.txt
+++ b/optional-requirements.txt
@@ -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
{{_('Description:')}}
+ {{entry.comments[0].text|safe}} +