From 6d4d6aceaf37cf07aaaf233dbe4ab78b49fc1c95 Mon Sep 17 00:00:00 2001 From: trasba Date: Sun, 16 Sep 2018 19:43:47 +0200 Subject: [PATCH 1/6] Update optional-requirements.txt changed optional requirement from lxml==3.7.2 to >=3.8.0 ebook-convert is not working properly with a version < 3.8.0 --- optional-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From 3fa41d0e4aa4f4d1f03fd068f231bee6964e07f2 Mon Sep 17 00:00:00 2001 From: trasba Date: Mon, 17 Sep 2018 21:55:41 +0200 Subject: [PATCH 2/6] added formats for upload and conversion added formats for upload and conversion (html, rtf, odt) --- cps/web.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cps/web.py b/cps/web.py index 2de1bbd3..877909a1 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 [])) From 76e3be58e681e475c8b5bcbebfd42ceafdf2163e Mon Sep 17 00:00:00 2001 From: Fatih Ka Date: Wed, 19 Sep 2018 21:38:40 +0300 Subject: [PATCH 3/6] Delete book fixed There was an incorrect parameter. --- cps/web.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cps/web.py b/cps/web.py index 2de1bbd3..ca95d02e 100644 --- a/cps/web.py +++ b/cps/web.py @@ -1702,7 +1702,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: From 522e897fee6484bfb6c40965e63016a07ce52ce4 Mon Sep 17 00:00:00 2001 From: eddriesen Date: Sun, 23 Sep 2018 15:52:11 +0200 Subject: [PATCH 4/6] Updated Dutch translation to current codebase As requested, A Dutch update --- cps/translations/nl/LC_MESSAGES/messages.mo | Bin 42908 -> 32296 bytes cps/translations/nl/LC_MESSAGES/messages.po | 370 ++++++++++---------- 2 files changed, 179 insertions(+), 191 deletions(-) diff --git a/cps/translations/nl/LC_MESSAGES/messages.mo b/cps/translations/nl/LC_MESSAGES/messages.mo index e01bcc579b26fb884ddcc4e9f70aa8e134bf3933..648da94893e74aafab29649c9f604bd00b92b3bf 100644 GIT binary patch literal 32296 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

@E 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 Ezxx$+F#rGn literal 42908 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 VU%-Ik;*;4erRsi0`c&iS{|jf5-CzI! diff --git a/cps/translations/nl/LC_MESSAGES/messages.po b/cps/translations/nl/LC_MESSAGES/messages.po index 8e786e2c..bebb6b90 100644 --- a/cps/translations/nl/LC_MESSAGES/messages.po +++ b/cps/translations/nl/LC_MESSAGES/messages.po @@ -9,15 +9,16 @@ 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" +"PO-Revision-Date: 2018-09-23 13:29+0200\n" "Last-Translator: \n" "Language: nl\n" "Language-Team: ed.driesen@telenet.be\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.5.1\n" +"X-Generator: Poedit 2.0.6\n" #: cps/book_formats.py:128 cps/book_formats.py:132 cps/book_formats.py:136 #: cps/converter.py:11 cps/converter.py:27 @@ -31,125 +32,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 +249,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 +257,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 +273,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 +318,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 +364,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 +373,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 +382,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 +416,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 +448,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 +466,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 +475,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 +491,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 +513,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 +538,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 +575,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 +588,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 +612,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 +634,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 +658,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 +695,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 +719,7 @@ msgstr "Gebruikersnaam" #: cps/templates/admin.html:10 msgid "E-mail" -msgstr "" +msgstr "Email" #: cps/templates/admin.html:11 msgid "Kindle" @@ -747,7 +748,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 +784,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 +800,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 +828,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 +894,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 +903,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 +954,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 +1019,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 +1047,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 +1063,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 +1083,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 +1095,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 +1111,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 +1151,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 +1184,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 +1201,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 +1245,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 +1253,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 +1365,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 +1450,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 +1458,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 +1478,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 +1565,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 +1578,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 +1686,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 +1718,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 +1738,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 +1750,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 +1806,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 +1850,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 +1881,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 "" @@ -1915,4 +1904,3 @@ msgstr "Recente Downloads" #~ msgid "Newest commit timestamp" #~ msgstr "Nieuwste commit tijdsstempel" - From b841baf714bd2e2d9913610a7ddb165ab23fc9d8 Mon Sep 17 00:00:00 2001 From: OzzieIsaacs Date: Sun, 23 Sep 2018 18:56:19 +0200 Subject: [PATCH 5/6] Comment for adding publishers --- cps/web.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cps/web.py b/cps/web.py index ca95d02e..9bd145f3 100644 --- a/cps/web.py +++ b/cps/web.py @@ -590,7 +590,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, languages, publisher new_element = db_object(add_element) db_session.add(new_element) # add element to book From ba7c734657a7c8c7d8516d90af602b1fb993238b Mon Sep 17 00:00:00 2001 From: OzzieIsaacs Date: Sun, 23 Sep 2018 19:15:50 +0200 Subject: [PATCH 6/6] Fixes from testing: Certificate files are rejected if not both files are provided Server shuts down controlled after pressing crtl+c Logfile location is better checked improvements for better testing (added ids and name in templates) --- cps/cli.py | 4 ++++ cps/server.py | 8 +++++++- cps/templates/admin.html | 8 ++++---- cps/templates/config_edit.html | 4 ++-- cps/templates/detail.html | 6 ++++-- cps/templates/layout.html | 16 ++++++++-------- cps/templates/register.html | 6 +----- cps/templates/shelf_edit.html | 2 +- cps/templates/user_edit.html | 2 -- cps/web.py | 7 +++---- cps/worker.py | 1 + 11 files changed, 35 insertions(+), 29 deletions(-) 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 @@
- + {% if not origin %} {{_('Back')}} {% endif %} {% if success %} - {{_('Login')}} + {{_('Login')}} {% endif %}
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}} +
+

{{_('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 @@ {%endif%} {% if g.user.show_sorted() %} - {%endif%} @@ -139,13 +139,13 @@ {%endif%} {% if g.user.show_best_rated_books() %} -
  • {{_('Best rated Books')}}
  • + {%endif%} {% if g.user.show_read_and_unread() %} {% if not g.user.is_anonymous %} -
  • {{_('Read Books')}}
  • + {%endif%} -
  • {{_('Unread Books')}}
  • + {%endif%} {% if g.user.show_random_books() %} 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/web.py b/cps/web.py index adf1807e..9b56b926 100644 --- a/cps/web.py +++ b/cps/web.py @@ -590,7 +590,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, languages, publisher + else: # db_type should be tag, language or publisher new_element = db_object(add_element) db_session.add(new_element) # add element to book @@ -3011,7 +3011,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() @@ -3059,8 +3060,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 = ''