From a045b6f467a1ed94cfc388a1534938a5f79c1ae7 Mon Sep 17 00:00:00 2001 From: byword77 Date: Tue, 5 Sep 2023 17:01:38 +0900 Subject: [PATCH 01/10] Update messages.po It is final commit. I made a mistake in the previous update. So, Please disregard the previous file. --- cps/translations/ko/LC_MESSAGES/messages.po | 145 ++++++++++---------- 1 file changed, 72 insertions(+), 73 deletions(-) diff --git a/cps/translations/ko/LC_MESSAGES/messages.po b/cps/translations/ko/LC_MESSAGES/messages.po index 1a1273e9..5cbcf0dc 100644 --- a/cps/translations/ko/LC_MESSAGES/messages.po +++ b/cps/translations/ko/LC_MESSAGES/messages.po @@ -33,7 +33,7 @@ msgstr "서버를 종료하는 중, 창을 닫아야 함" #: cps/admin.py:156 msgid "Success! Database Reconnected" -msgstr "" +msgstr "성공적으로 DB를 다시 연결하였습니다." #: cps/admin.py:159 msgid "Unknown command" @@ -190,7 +190,7 @@ msgstr "캘리버 서재의 언어를 변경하시겠습니까?" #: cps/admin.py:629 msgid "Calibre-Web will search for updated Covers and update Cover Thumbnails, this may take a while?" -msgstr "" +msgstr "Calibre-Web은 업데이트된 표지를 검색하고 표지 섬네일 업데이트합니다. 시간이 오래 걸릴 수 있습니다." #: cps/admin.py:632 msgid "Are you sure you want delete Calibre-Web's sync database to force a full sync with your Kobo Reader?" @@ -285,7 +285,7 @@ msgstr "이메일 서버 설정 편집" #: cps/admin.py:1290 msgid "Success! Gmail Account Verified." -msgstr "" +msgstr "Gmail 계정 인증에 성공하였습니다." #: cps/admin.py:1310 cps/admin.py:1313 cps/admin.py:1695 cps/admin.py:1829 #: cps/admin.py:1927 cps/admin.py:2048 cps/editbooks.py:230 @@ -316,19 +316,19 @@ msgstr "이메일 서버 설정 업데이트됨" #: cps/admin.py:1350 cps/templates/admin.html:195 msgid "Edit Scheduled Tasks Settings" -msgstr "" +msgstr "예약 작업 설정 편집" #: cps/admin.py:1362 msgid "Invalid start time for task specified" -msgstr "" +msgstr "지정된 작업의 시작 시간이 잘못 설정되었습니다." #: cps/admin.py:1367 msgid "Invalid duration for task specified" -msgstr "" +msgstr "지정된 작업의 기간이 잘못 설정되었습니다." #: cps/admin.py:1377 msgid "Scheduled tasks settings updated" -msgstr "" +msgstr "예약된 작업 설정을 업데이트 하였습니다." #: cps/admin.py:1387 cps/admin.py:1436 cps/admin.py:2044 cps/web.py:1281 msgid "Oops! An unknown error occurred. Please try again later." @@ -336,7 +336,7 @@ msgstr "알 수없는 오류가 발생했습니다. 나중에 다시 시도 해 #: cps/admin.py:1391 msgid "Settings DB is not Writeable" -msgstr "" +msgstr "저장할 수 없는 설정 DB입니다." #: cps/admin.py:1421 cps/admin.py:2036 #, python-format @@ -457,7 +457,7 @@ msgstr "올바르지 않은 인증서 파일 위치. 올바른 경로 입력 필 #: cps/admin.py:1816 msgid "Password length has to be between 1 and 40" -msgstr "" +msgstr "비밀번호 길이는 1에서 40 사이여야 합니다." #: cps/admin.py:1868 msgid "Database Settings updated" @@ -503,7 +503,7 @@ msgstr "관리자 계정이 하나 뿐일 때는 관리자 권한을 삭제할 #: cps/admin.py:2014 cps/web.py:1430 msgid "Email can't be empty and has to be a valid Email" -msgstr "" +msgstr "이메일은 반드시 입력해야 하며 유효한 이메일이어야 합니다." #: cps/admin.py:2040 #, python-format @@ -537,7 +537,7 @@ msgstr "선택한 책 제목을 사용할 수 없습니다. 파일이 존재하 #: cps/editbooks.py:155 cps/editbooks.py:1225 msgid "User has no rights to upload cover" -msgstr "" +msgstr "표지를 업로드 할 수 있는 권한이 없는 사용자입니다." #: cps/editbooks.py:175 cps/editbooks.py:718 msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" @@ -549,7 +549,7 @@ msgstr "메타데이터가 성공적으로 업데이트되었습니다" #: cps/editbooks.py:235 msgid "Error editing book: {}" -msgstr "" +msgstr "책 편집 중 오류 발생: {}" #: cps/editbooks.py:292 #, python-format @@ -608,7 +608,7 @@ msgstr "책이 성공적으로 삭제되었습니다" #: cps/editbooks.py:882 msgid "You are missing permissions to delete books" -msgstr "" +msgstr "책을 삭제할 수 있는 권한이 없습니다." #: cps/editbooks.py:932 msgid "edit metadata" @@ -621,7 +621,7 @@ msgstr "%(seriesindex)s은(는) 유효한 숫자가 아닙니다. 건너뜁니 #: cps/editbooks.py:1160 msgid "User has no rights to upload additional file formats" -msgstr "" +msgstr "추가 파일 유형을 업로드 할 권한이 없는 사용자입니다." #: cps/editbooks.py:1181 #, python-format @@ -711,7 +711,7 @@ msgstr "요청한 파일을 읽을 수 없습니다. 올바른 권한인가요?" #: cps/helper.py:342 msgid "Read status could not set: {}" -msgstr "" +msgstr "읽기 상태를 설정할 수 없음: {}" #: cps/helper.py:365 #, python-format @@ -745,7 +745,7 @@ msgstr "제목 이름을 '%(src)s'에서 '%(dest)s'(으)로 변경하지 못했 #: cps/helper.py:582 msgid "Error in rename file in path: {}" -msgstr "" +msgstr "경로에서 파일 이름을 바꾸는 중 오류가 발생: {}" #: cps/helper.py:600 #, python-format @@ -754,7 +754,7 @@ msgstr "Google 드라이브에서 책 경로 %(path)s을(를) 찾을 수 없습 #: cps/helper.py:665 msgid "Found an existing account for this Email address" -msgstr "" +msgstr "다른 계정에서 사용하고 있는 이메일 주소입니다." #: cps/helper.py:673 msgid "This username is already taken" @@ -767,11 +767,11 @@ msgstr "이메일 주소 형식이 잘못되었습니다" #: cps/helper.py:703 msgid "Password doesn't comply with password validation rules" -msgstr "" +msgstr "규칙에 어긋나는 비밀번호입니다." #: cps/helper.py:853 msgid "Python module 'advocate' is not installed but is needed for cover uploads" -msgstr "" +msgstr "표지 업로드에 필요한 Python 모듈 'advocate'이 설치되지 않았습니다." #: cps/helper.py:863 msgid "Error Downloading Cover" @@ -783,7 +783,7 @@ msgstr "표지 형식 오류" #: cps/helper.py:869 msgid "You are not allowed to access localhost or the local network for cover uploads" -msgstr "" +msgstr "표지 업로드를 위해 localhost 또는 로컬 네트워크에 액세스할 수 없습니다." #: cps/helper.py:879 msgid "Failed to create path for cover" @@ -821,7 +821,7 @@ msgstr "발견" #: cps/helper.py:1080 cps/templates/admin.html:216 msgid "Queue all books for metadata backup" -msgstr "" +msgstr "메타데이터 백업을 위해 모든 도서를 대기열에 추가" #: cps/kobo_auth.py:90 #, fuzzy @@ -1166,7 +1166,7 @@ msgstr "책장 편집" #: cps/shelf.py:229 msgid "Error deleting Shelf" -msgstr "" +msgstr "서제를 삭제하는 동안 오류 발생" #: cps/shelf.py:231 #, fuzzy @@ -1238,11 +1238,11 @@ msgstr "종료" #: cps/tasks_status.py:70 msgid "Ended" -msgstr "" +msgstr "종료됨" #: cps/tasks_status.py:72 msgid "Cancelled" -msgstr "" +msgstr "취소됨" #: cps/tasks_status.py:74 msgid "Unknown Status" @@ -1307,7 +1307,7 @@ msgstr "시리즈: %(serie)s" #: cps/web.py:620 msgid "Rating: None" -msgstr "" +msgstr "평가: 없음음" #: cps/web.py:629 #, python-format @@ -1363,7 +1363,7 @@ msgstr "Kindle로 보내는 유효한 이메일 주소로 프로필을 업데이 #: cps/web.py:1246 msgid "Please wait one minute to register next user" -msgstr "" +msgstr "1분 이상 지난 후 다음 사용자를 등록하세요." #: cps/templates/layout.html:68 cps/templates/layout.html:102 #: cps/templates/login.html:27 cps/templates/register.html:17 cps/web.py:1247 @@ -1391,7 +1391,7 @@ msgstr "LDAP 인증을 활성화할 수 없습니다" #: cps/web.py:1345 msgid "Please wait one minute before next login" -msgstr "" +msgstr "1분 이상 지난 후 로그인을 하세요." #: cps/web.py:1361 #, fuzzy, python-format @@ -1492,15 +1492,15 @@ msgstr "오류로 인한 Calibre 실패: %(error)s" #: cps/tasks/convert.py:275 msgid "Convert" -msgstr "" +msgstr "변환" #: cps/tasks/database.py:28 msgid "Reconnecting Calibre database" -msgstr "" +msgstr "Calibre DB를 다시 연결합니다." #: cps/tasks/mail.py:266 msgid "E-mail" -msgstr "" +msgstr "이메일일" #: cps/tasks/metadata_backup.py:46 #, fuzzy @@ -1510,20 +1510,20 @@ msgstr "메타데이터 편집" #: cps/tasks/thumbnail.py:96 #, python-format msgid "Generated %(count)s cover thumbnails" -msgstr "" +msgstr "%(count)개의 표지 섬네일을 생성하였습니다." #: cps/tasks/thumbnail.py:230 cps/tasks/thumbnail.py:443 #: cps/tasks/thumbnail.py:511 msgid "Cover Thumbnails" -msgstr "" +msgstr "표지 섬네일" #: cps/tasks/thumbnail.py:289 msgid "Generated {0} series thumbnails" -msgstr "" +msgstr "{0} 시리즈 섬네일을 생성하였습니다." #: cps/tasks/thumbnail.py:454 msgid "Clearing cover thumbnail cache" -msgstr "" +msgstr "표지 섬네일 캐시를 삭제합니다." #: cps/tasks/upload.py:38 cps/templates/admin.html:20 #: cps/templates/layout.html:81 cps/templates/user_table.html:145 @@ -1686,37 +1686,37 @@ msgstr "UI 환경 설정 편집" #: cps/templates/admin.html:167 msgid "Scheduled Tasks" -msgstr "" +msgstr "예약된 작업" #: cps/templates/admin.html:170 cps/templates/schedule_edit.html:12 #: cps/templates/tasks.html:18 msgid "Start Time" -msgstr "" +msgstr "시작 시간" #: cps/templates/admin.html:174 cps/templates/schedule_edit.html:20 msgid "Maximum Duration" -msgstr "" +msgstr "최대 기간" #: cps/templates/admin.html:178 cps/templates/schedule_edit.html:29 msgid "Generate Thumbnails" -msgstr "" +msgstr "섬네일 생성성" #: cps/templates/admin.html:182 msgid "Generate series cover thumbnails" -msgstr "" +msgstr "시리즈 표지 섬네일 생성" #: cps/templates/admin.html:186 cps/templates/admin.html:208 #: cps/templates/schedule_edit.html:37 msgid "Reconnect Calibre Database" -msgstr "" +msgstr "Calibre DB 다시 연결" #: cps/templates/admin.html:190 cps/templates/schedule_edit.html:41 msgid "Generate Metadata Backup Files" -msgstr "" +msgstr "메타 정보 백업 파일 생성" #: cps/templates/admin.html:197 msgid "Refresh Thumbnail Cache" -msgstr "" +msgstr "섬네일 캐시 새로 고침침" #: cps/templates/admin.html:203 msgid "Administration" @@ -1740,7 +1740,7 @@ msgstr "종료" #: cps/templates/admin.html:221 msgid "Version Information" -msgstr "" +msgstr "버전 정보" #: cps/templates/admin.html:225 msgid "Version" @@ -1788,7 +1788,7 @@ msgstr "종료를 하시겠습니까?" #: cps/templates/admin.html:283 msgid "Updating, please do not reload this page" -msgstr "Встановлення оновлень, будь-ласка, не оновлюйте сторінку" +msgstr "업데이트 중입니다. 이 페이지를 새로고침 하지 마세요." #: cps/templates/author.html:15 msgid "via" @@ -2089,7 +2089,7 @@ msgstr "코멘트" #: cps/templates/book_table.html:75 msgid "Archive Status" -msgstr "" +msgstr "아카이브 상태태" #: cps/templates/book_table.html:77 cps/templates/search_form.html:42 msgid "Read Status" @@ -2133,7 +2133,7 @@ msgstr "구글 드라이브 인증" #: cps/templates/config_db.html:32 msgid "Google Drive Calibre folder" -msgstr "Google Drive Calibre 폴더" +msgstr "구글 드라이브 Calibre 폴더" #: cps/templates/config_db.html:40 msgid "Metadata Watch Channel ID" @@ -2421,44 +2421,44 @@ msgstr "OAuth 설정" #: cps/templates/config_edit.html:369 msgid "Limit failed login attempts" -msgstr "" +msgstr "로그인 시도 제한" #: cps/templates/config_edit.html:372 msgid "Session protection" -msgstr "" +msgstr "세션 보호" #: cps/templates/config_edit.html:374 msgid "Basic" -msgstr "" +msgstr "기본" #: cps/templates/config_edit.html:375 msgid "Strong" -msgstr "" +msgstr "강함함" #: cps/templates/config_edit.html:380 #, fuzzy msgid "User Password policy" -msgstr "사용자 비밀번호 초기화" +msgstr "사용자 비밀번호 정책" #: cps/templates/config_edit.html:384 msgid "Minimum password length" -msgstr "" +msgstr "최소 비밀번호 길이" #: cps/templates/config_edit.html:389 msgid "Enforce number" -msgstr "" +msgstr "반드시 숫자 입력" #: cps/templates/config_edit.html:393 msgid "Enforce lowercase characters" -msgstr "" +msgstr "반드시 소문자 입력" #: cps/templates/config_edit.html:397 msgid "Enforce uppercase characters" -msgstr "" +msgstr "반드시 대문자 입력" #: cps/templates/config_edit.html:401 msgid "Enforce special characters" -msgstr "" +msgstr "반드시 특수문자 입력력" #: cps/templates/config_view_edit.html:17 msgid "View Configuration" @@ -2620,7 +2620,7 @@ msgstr "(공개)" #: cps/templates/detail.html:339 msgid "Edit Metadata" -msgstr "메타저오 편집" +msgstr "메타정보보 편집" #: cps/templates/email_edit.html:13 msgid "Email Account Type" @@ -2634,11 +2634,11 @@ msgstr "표준 이메일 계정 사용" #: cps/templates/email_edit.html:16 #, fuzzy msgid "Gmail Account" -msgstr "서버 유형 선택" +msgstr "Gmail 계정" #: cps/templates/email_edit.html:22 msgid "Setup Gmail Account" -msgstr "" +msgstr "Gmail 계정 설정정" #: cps/templates/email_edit.html:24 msgid "Revoke Gmail Access" @@ -2706,7 +2706,7 @@ msgstr "코보 연동 토큰" #: cps/templates/grid.html:21 msgid "List" -msgstr "" +msgstr "목록" #: cps/templates/http_error.html:34 msgid "Calibre-Web Instance is unconfigured, please contact your administrator" @@ -2878,7 +2878,7 @@ msgstr "책 상세정보" #: cps/templates/list.html:22 msgid "Grid" -msgstr "" +msgstr "그리드드" #: cps/templates/login.html:18 msgid "Remember Me" @@ -3006,7 +3006,7 @@ msgstr "어둡게" #: cps/templates/read.html:83 msgid "Sepia" -msgstr "" +msgstr "세피아" #: cps/templates/read.html:84 #, fuzzy @@ -3019,7 +3019,7 @@ msgstr "사이드바가 열려 있을 때 텍스트 다시 배열." #: cps/templates/read.html:93 msgid "Font Sizes" -msgstr "" +msgstr "글자 크기기" #: cps/templates/readcbr.html:7 msgid "Comic Reader" @@ -3039,11 +3039,11 @@ msgstr "다음 페이지" #: cps/templates/readcbr.html:96 msgid "Single Page Display" -msgstr "" +msgstr "한 페이지 보기기" #: cps/templates/readcbr.html:97 msgid "Long Strip Display" -msgstr "" +msgstr "Long Strip Display" #: cps/templates/readcbr.html:98 msgid "Scale to Best" @@ -3075,7 +3075,7 @@ msgstr "이미지 뒤집기" #: cps/templates/readcbr.html:126 msgid "Display" -msgstr "" +msgstr "화면" #: cps/templates/readcbr.html:129 #, fuzzy @@ -3084,7 +3084,7 @@ msgstr "관리자 페이지" #: cps/templates/readcbr.html:130 msgid "Long Strip" -msgstr "" +msgstr "Long Strip" #: cps/templates/readcbr.html:135 msgid "Scale" @@ -3188,7 +3188,7 @@ msgstr "이 확인 링크는 10분 후에 만료됩니다." #: cps/templates/schedule_edit.html:33 msgid "Generate Series Cover Thumbnails" -msgstr "" +msgstr "시리즈 섬네일 표지 생성" #: cps/templates/search.html:6 msgid "No Results Found" @@ -3312,7 +3312,7 @@ msgstr "시스템 통계" #: cps/templates/stats.html:33 msgid "Program" -msgstr "" +msgstr "프로그램램" #: cps/templates/stats.html:34 msgid "Installed Version" @@ -3340,15 +3340,15 @@ msgstr "실행 시간" #: cps/templates/tasks.html:20 msgid "Actions" -msgstr "" +msgstr "Actions" #: cps/templates/tasks.html:40 msgid "This task will be cancelled. Any progress made by this task will be saved." -msgstr "" +msgstr "이 작업을 취소합니다. 이 작업의 모든 진행사항은 반영됩니다." #: cps/templates/tasks.html:41 msgid "If this is a scheduled task, it will be re-ran during the next scheduled time." -msgstr "" +msgstr "이 작업이 예약된 작업이라면, 다음 예약 시간에 다시 실행됩니다." #: cps/templates/user_edit.html:20 msgid "Reset user Password" @@ -3485,4 +3485,3 @@ msgstr "선택한 서재를 코보와 동기화" #, fuzzy msgid "Show Read/Unread Section" msgstr "읽음/읽지 않음 선택 표시" - From b3d1558df8b5bcffb5fe068bc7ef1f65396d738e Mon Sep 17 00:00:00 2001 From: databoy2k Date: Fri, 8 Sep 2023 13:09:40 -0600 Subject: [PATCH 02/10] Add Favicon to OPDS Feed is a standard of the OPDS spec, and this commit adds the favicon to the feed. Certain OPDS readers, e.g. FBReader on Windows, respect this tag and will show the same icon as the main page. --- cps/templates/index.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/cps/templates/index.xml b/cps/templates/index.xml index bee40d66..43749a74 100644 --- a/cps/templates/index.xml +++ b/cps/templates/index.xml @@ -1,5 +1,6 @@ + /static/favicon.ico urn:uuid:2853dacf-ed79-42f5-8e8a-a7bb3d1ae6a2 {{ current_time }} From 65f3ecb924fd75708e92b847706b2850f8405fc2 Mon Sep 17 00:00:00 2001 From: Ozzie Isaacs Date: Sun, 15 Oct 2023 15:43:50 +0200 Subject: [PATCH 03/10] Updated test results --- test/Calibre-Web TestSummary_Linux.html | 170 +++++++++++++++--------- 1 file changed, 104 insertions(+), 66 deletions(-) diff --git a/test/Calibre-Web TestSummary_Linux.html b/test/Calibre-Web TestSummary_Linux.html index 31b7c621..dba81712 100644 --- a/test/Calibre-Web TestSummary_Linux.html +++ b/test/Calibre-Web TestSummary_Linux.html @@ -37,20 +37,20 @@
-

Start Time: 2023-10-11 19:32:23

+

Start Time: 2023-10-14 22:05:01

-

Stop Time: 2023-10-12 01:29:49

+

Stop Time: 2023-10-15 04:41:17

-

Duration: 4h 56 min

+

Duration: 5h 34 min

@@ -248,31 +248,11 @@ - +
TestBackupMetadata - test_backup_all
- -
- FAIL -
- - - - + PASS @@ -342,7 +322,7 @@ AssertionError: 1 != 0 -
TestBackupMetadata - test_backup_change_book_series_index
+
TestBackupMetadata - test_backup_change_book_seriesindex
PASS @@ -412,11 +392,31 @@ AssertionError: 1 != 0 - +
TestBackupMetadata - test_backup_change_custom_float
- PASS + +
+ FAIL +
+ + + + @@ -992,11 +992,11 @@ AssertionError: 1 != 0 - + TestEbookConvertGDriveKepubify 3 - 3 - 0 + 2 + 1 0 0 @@ -1015,11 +1015,33 @@ AssertionError: 1 != 0 - +
TestEbookConvertGDriveKepubify - test_convert_only
- PASS + +
+ FAIL +
+ + + + @@ -3623,12 +3645,12 @@ IndexError: list index out of range - + TestReader 6 - 6 - 0 + 5 0 + 1 0 Detail @@ -3637,11 +3659,47 @@ IndexError: list index out of range - +
TestReader - test_comic_MACOS_files
- PASS + +
+ ERROR +
+ + + + @@ -4045,11 +4103,11 @@ IndexError: list index out of range - + TestThumbnails 8 - 6 - 1 + 7 + 0 0 1 @@ -4122,31 +4180,11 @@ IndexError: list index out of range - +
TestThumbnails - test_sideloaded_book
- -
- FAIL -
- - - - + PASS @@ -5221,9 +5259,9 @@ AssertionError: 0.004399004046062869 != 0.0 within 0.0001 delta (0.0043990040460 Total 462 - 450 + 449 + 2 2 - 1 9   @@ -5714,7 +5752,7 @@ AssertionError: 0.004399004046062869 != 0.0 within 0.0001 delta (0.0043990040460 From f0f8011d241f08e5da52b0864f0328244c3afb63 Mon Sep 17 00:00:00 2001 From: Ozzie Isaacs Date: Mon, 16 Oct 2023 18:17:54 +0200 Subject: [PATCH 04/10] Modified build script to avoid warnings --- setup.cfg | 7 +++++-- setup.py | 5 +++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/setup.cfg b/setup.cfg index 11703785..4dd18210 100644 --- a/setup.cfg +++ b/setup.cfg @@ -13,7 +13,7 @@ author = @OzzieIsaacs author_email = Ozzie.Fernandez.Isaacs@googlemail.com maintainer = @OzzieIsaacs license = GPLv3+ -license_file = LICENSE +license_files = LICENSE classifiers = Development Status :: 5 - Production/Stable License :: OSI Approved :: GNU Affero General Public License v3 @@ -58,7 +58,10 @@ install_requires = chardet>=3.0.0,<4.1.0 advocate>=1.0.0,<1.1.0 Flask-Limiter>=2.3.0,<3.5.0 - + +[options.packages.find] +where = src +include = cps/services* [options.extras_require] gdrive = diff --git a/setup.py b/setup.py index 6bde2211..35db2e90 100644 --- a/setup.py +++ b/setup.py @@ -40,7 +40,8 @@ def find_version(*file_paths): raise RuntimeError("Unable to find version string.") setup( - packages=find_packages("src"), - package_dir = {'': 'src'}, + #packages=find_packages("src"), + #package_dir = {'': 'src'}, + #package_data={"calibreweb": ["cps/translations/*/LC_MESSAGES/*.mo"], "templates": ["*.html"]}, version=find_version("src", "calibreweb", "cps", "constants.py") ) From 0736c53d7b3eba17ecfcdcbc7a277547946ffc3d Mon Sep 17 00:00:00 2001 From: Ozzie Isaacs Date: Wed, 18 Oct 2023 18:14:00 +0200 Subject: [PATCH 05/10] Update teststatus --- setup.cfg | 1 + setup.py | 4 - test/Calibre-Web TestSummary_Linux.html | 204 +++++++++++------------- 3 files changed, 97 insertions(+), 112 deletions(-) diff --git a/setup.cfg b/setup.cfg index 4dd18210..4bcd1a11 100644 --- a/setup.cfg +++ b/setup.cfg @@ -58,6 +58,7 @@ install_requires = chardet>=3.0.0,<4.1.0 advocate>=1.0.0,<1.1.0 Flask-Limiter>=2.3.0,<3.5.0 + [options.packages.find] where = src diff --git a/setup.py b/setup.py index 35db2e90..8dcbee25 100644 --- a/setup.py +++ b/setup.py @@ -20,7 +20,6 @@ # """Calibre-web distribution package setuptools installer.""" from setuptools import setup -from setuptools import find_packages import os import re import codecs @@ -40,8 +39,5 @@ def find_version(*file_paths): raise RuntimeError("Unable to find version string.") setup( - #packages=find_packages("src"), - #package_dir = {'': 'src'}, - #package_data={"calibreweb": ["cps/translations/*/LC_MESSAGES/*.mo"], "templates": ["*.html"]}, version=find_version("src", "calibreweb", "cps", "constants.py") ) diff --git a/test/Calibre-Web TestSummary_Linux.html b/test/Calibre-Web TestSummary_Linux.html index dba81712..7ca3dad5 100644 --- a/test/Calibre-Web TestSummary_Linux.html +++ b/test/Calibre-Web TestSummary_Linux.html @@ -37,20 +37,20 @@
-

Start Time: 2023-10-14 22:05:01

+

Start Time: 2023-10-16 19:38:22

-

Stop Time: 2023-10-15 04:41:17

+

Stop Time: 2023-10-17 02:18:49

-

Duration: 5h 34 min

+

Duration: 5h 37 min

@@ -234,11 +234,11 @@ - + TestBackupMetadata 22 - 21 - 1 + 22 + 0 0 0 @@ -322,7 +322,7 @@ -
TestBackupMetadata - test_backup_change_book_seriesindex
+
TestBackupMetadata - test_backup_change_book_series_index
PASS @@ -392,31 +392,11 @@ - +
TestBackupMetadata - test_backup_change_custom_float
- -
- FAIL -
- - - - + PASS @@ -992,11 +972,11 @@ AssertionError: None != 3.33 - + TestEbookConvertGDriveKepubify 3 - 2 - 1 + 3 + 0 0 0 @@ -1015,33 +995,11 @@ AssertionError: None != 3.33 - +
TestEbookConvertGDriveKepubify - test_convert_only
- -
- FAIL -
- - - - + PASS @@ -2018,12 +1976,12 @@ IndexError: list index out of range - + TestEditBooksOnGdrive 18 - 18 - 0 + 17 0 + 1 0 Detail @@ -2167,11 +2125,31 @@ IndexError: list index out of range - +
TestEditBooksOnGdrive - test_edit_title
- PASS + +
+ ERROR +
+ + + + @@ -3645,13 +3623,13 @@ IndexError: list index out of range - + TestReader 6 5 - 0 1 0 + 0 Detail @@ -3659,47 +3637,11 @@ IndexError: list index out of range - +
TestReader - test_comic_MACOS_files
- -
- ERROR -
- - - - + PASS @@ -3731,11 +3673,37 @@ receiveMessage@chrome://remote/content/marionette/actors/MarionetteCommandsChild - +
TestReader - test_sound_listener
- PASS + +
+ FAIL +
+ + + + @@ -4103,11 +4071,11 @@ receiveMessage@chrome://remote/content/marionette/actors/MarionetteCommandsChild - + TestThumbnails 8 - 7 - 0 + 6 + 1 0 1 @@ -4180,11 +4148,31 @@ receiveMessage@chrome://remote/content/marionette/actors/MarionetteCommandsChild - +
TestThumbnails - test_sideloaded_book
- PASS + +
+ FAIL +
+ + + + From c45188beb22adc5416bb8fd73fa23bf5270f7759 Mon Sep 17 00:00:00 2001 From: Ozzie Isaacs Date: Sat, 21 Oct 2023 12:40:32 +0200 Subject: [PATCH 06/10] Version update --- cps/constants.py | 2 +- setup.cfg | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/cps/constants.py b/cps/constants.py index c7d3a6ce..08a16a19 100644 --- a/cps/constants.py +++ b/cps/constants.py @@ -163,7 +163,7 @@ def selected_roles(dictionary): BookMeta = namedtuple('BookMeta', 'file_path, extension, title, author, cover, description, tags, series, ' 'series_id, languages, publisher, pubdate, identifiers') -STABLE_VERSION = {'version': '0.6.21 Beta'} +STABLE_VERSION = {'version': '0.6.21'} NIGHTLY_VERSION = dict() NIGHTLY_VERSION[0] = '$Format:%H$' diff --git a/setup.cfg b/setup.cfg index 4bcd1a11..4dd18210 100644 --- a/setup.cfg +++ b/setup.cfg @@ -58,7 +58,6 @@ install_requires = chardet>=3.0.0,<4.1.0 advocate>=1.0.0,<1.1.0 Flask-Limiter>=2.3.0,<3.5.0 - [options.packages.find] where = src From 6e755a26f9cc07976b2083a3cb0613bf1d5d6390 Mon Sep 17 00:00:00 2001 From: Ozzie Isaacs Date: Sat, 21 Oct 2023 14:33:22 +0200 Subject: [PATCH 07/10] Version update Updated security file --- SECURITY.md | 7 +++++++ cps/constants.py | 2 +- setup.cfg | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/SECURITY.md b/SECURITY.md index f37c62dc..e4ab1a8d 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -38,6 +38,13 @@ To receive fixes for security vulnerabilities it is required to always upgrade t | V 0.6.18 | Possible SQL Injection is prevented in user table Thanks to Iman Sharafaldin (Forward Security) |CVE-2022-30765| | V 0.6.18 | The SSRF protection no longer can be bypassed by IPV6/IPV4 embedding. Thanks to @416e6e61 |CVE-2022-0939| | V 0.6.18 | The SSRF protection no longer can be bypassed to connect to other servers in the local network. Thanks to @michaellrowley |CVE-2022-0990| +| V 0.6.20 | Credentials for emails are now stored encrypted || +| V 0.6.20 | Login is rate limited || +| V 0.6.20 | Passwordstrength can be forced || +| V 0.6.21 | SMTP server credentials are no longer returned to client || +| V 0.6.21 | Cross-site scripting (XSS) stored in href bypasses filter using data wrapper no longer possible || +| V 0.6.21 | Cross-site scripting (XSS) is no longer possible via pathchooser || +| V 0.6.21 | Error Handling at non existent rating, language, and user downloaded books was fixed || ## Statement regarding Log4j (CVE-2021-44228 and related) diff --git a/cps/constants.py b/cps/constants.py index 08a16a19..e8c52a68 100644 --- a/cps/constants.py +++ b/cps/constants.py @@ -163,7 +163,7 @@ def selected_roles(dictionary): BookMeta = namedtuple('BookMeta', 'file_path, extension, title, author, cover, description, tags, series, ' 'series_id, languages, publisher, pubdate, identifiers') -STABLE_VERSION = {'version': '0.6.21'} +STABLE_VERSION = {'version': '0.6.22 Beta'} NIGHTLY_VERSION = dict() NIGHTLY_VERSION[0] = '$Format:%H$' diff --git a/setup.cfg b/setup.cfg index 4dd18210..4bcd1a11 100644 --- a/setup.cfg +++ b/setup.cfg @@ -58,6 +58,7 @@ install_requires = chardet>=3.0.0,<4.1.0 advocate>=1.0.0,<1.1.0 Flask-Limiter>=2.3.0,<3.5.0 + [options.packages.find] where = src From c0ae5bb38183b7b8faf61fa215a60980fa83293a Mon Sep 17 00:00:00 2001 From: mapi68 <41143572+mapi68@users.noreply.github.com> Date: Sat, 21 Oct 2023 15:34:09 +0200 Subject: [PATCH 08/10] Update messages.po --- cps/translations/it/LC_MESSAGES/messages.po | 378 ++++++++++++++------ 1 file changed, 272 insertions(+), 106 deletions(-) diff --git a/cps/translations/it/LC_MESSAGES/messages.po b/cps/translations/it/LC_MESSAGES/messages.po index d2e596e2..f45ff49d 100644 --- a/cps/translations/it/LC_MESSAGES/messages.po +++ b/cps/translations/it/LC_MESSAGES/messages.po @@ -2,21 +2,22 @@ # Copyright (C) 2016 Smart Cities Community # This file is distributed under the same license as the Calibre-Web # Juan F. Villa , 2016. -# Massimo Pissarello , 2023. +# SPDX-FileCopyrightText: 2023 Massimo Pissarello msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" "POT-Creation-Date: 2023-10-14 15:54+0200\n" -"PO-Revision-Date: 2023-04-18 09:04+0200\n" +"PO-Revision-Date: 2023-10-21 15:27+0200\n" "Last-Translator: Massimo Pissarello \n" "Language: it\n" "Language-Team: Italian <>\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.11.0\n" +"X-Generator: Lokalize 23.08.2\n" #: cps/about.py:84 msgid "Statistics" @@ -39,8 +40,11 @@ msgid "Unknown command" msgstr "Comando sconosciuto" #: cps/admin.py:170 -msgid "Success! Books queued for Metadata Backup, please check Tasks for result" -msgstr "Tutto OK! Libri in coda per il backup dei metadati, controlla le attività per il risultato" +msgid "" +"Success! Books queued for Metadata Backup, please check Tasks for result" +msgstr "" +"Tutto OK! Libri in coda per il backup dei metadati, controlla le attività per" +" il risultato" #: cps/admin.py:203 cps/editbooks.py:578 cps/editbooks.py:580 #: cps/editbooks.py:618 cps/editbooks.py:635 cps/editbooks.py:1244 @@ -96,7 +100,9 @@ msgstr "L'utente Guest (ospite) non può avere questo ruolo" #: cps/admin.py:491 cps/admin.py:1974 msgid "No admin user remaining, can't remove admin role" -msgstr "Non rimarrebbe nessun utente amministratore, non posso rimuovere il ruolo di amministratore" +msgstr "" +"Non rimarrebbe nessun utente amministratore, non posso rimuovere il ruolo di" +" amministratore" #: cps/admin.py:495 cps/admin.py:509 msgid "Value has to be true or false" @@ -116,7 +122,9 @@ msgstr "Visualizzazione non valida" #: cps/admin.py:514 msgid "Guest's Locale is determined automatically and can't be set" -msgstr "Le impostazioni locali dell'utente Guest (ospite) sono determinate automaticamente e non possono essere configurate" +msgstr "" +"Le impostazioni locali dell'utente Guest (ospite) sono determinate" +" automaticamente e non possono essere configurate" #: cps/admin.py:518 msgid "No Valid Locale Given" @@ -160,39 +168,66 @@ msgstr "Vuoi veramente eliminare questo scaffale?" #: cps/admin.py:614 msgid "Are you sure you want to change locales of selected user(s)?" -msgstr "Sei sicuro di voler modificare le impostazioni locali del/degli utente/i selezionato/i?" +msgstr "" +"Sei sicuro di voler modificare le impostazioni locali del/degli utente/i" +" selezionato/i?" #: cps/admin.py:616 -msgid "Are you sure you want to change visible book languages for selected user(s)?" -msgstr "Sei sicuro di voler modificare le impostazioni delle lingue visualizzabili dall'/dagli utente/i selezionato/i?" +msgid "" +"Are you sure you want to change visible book languages for selected user(s)?" +msgstr "" +"Sei sicuro di voler modificare le impostazioni delle lingue visualizzabili" +" dall'/dagli utente/i selezionato/i?" #: cps/admin.py:618 -msgid "Are you sure you want to change the selected role for the selected user(s)?" -msgstr "Sei sicuro di voler modificare il ruolo evidenziato del/degli utente/i selezionato/i?" +msgid "" +"Are you sure you want to change the selected role for the selected user(s)?" +msgstr "" +"Sei sicuro di voler modificare il ruolo evidenziato del/degli utente/i" +" selezionato/i?" #: cps/admin.py:620 -msgid "Are you sure you want to change the selected restrictions for the selected user(s)?" -msgstr "Sei sicuro di voler modificare le restrizioni selezionate del/degli utente/i selezionato/i?" +msgid "" +"Are you sure you want to change the selected restrictions for the selected" +" user(s)?" +msgstr "" +"Sei sicuro di voler modificare le restrizioni selezionate del/degli utente/i" +" selezionato/i?" #: cps/admin.py:622 -msgid "Are you sure you want to change the selected visibility restrictions for the selected user(s)?" -msgstr "Sei sicuro di voler modificare le restrizioni di visibilità selezionate per l'utente(i) selezionato(i)?" +msgid "" +"Are you sure you want to change the selected visibility restrictions for the" +" selected user(s)?" +msgstr "" +"Sei sicuro di voler modificare le restrizioni di visibilità selezionate per" +" l'utente(i) selezionato(i)?" #: cps/admin.py:625 -msgid "Are you sure you want to change shelf sync behavior for the selected user(s)?" -msgstr "Sei sicuro di voler modificare il comportamento di sincronizzazione dello scaffale per l'/gli utente/i selezionato/i?" +msgid "" +"Are you sure you want to change shelf sync behavior for the selected user(s)?" +msgstr "" +"Sei sicuro di voler modificare il comportamento di sincronizzazione dello" +" scaffale per l'/gli utente/i selezionato/i?" #: cps/admin.py:627 msgid "Are you sure you want to change Calibre library location?" msgstr "Sei sicuro di voler modificare la posizione della libreria di Calibre?" #: cps/admin.py:629 -msgid "Calibre-Web will search for updated Covers and update Cover Thumbnails, this may take a while?" -msgstr "Calibre-Web cercherà le copertine aggiornate e aggiornerà le miniature delle copertine, questo richiederà un po' di tempo." +msgid "" +"Calibre-Web will search for updated Covers and update Cover Thumbnails, this" +" may take a while?" +msgstr "" +"Calibre-Web cercherà le copertine aggiornate e aggiornerà le miniature delle" +" copertine, questo richiederà un po' di tempo." #: cps/admin.py:632 -msgid "Are you sure you want delete Calibre-Web's sync database to force a full sync with your Kobo Reader?" -msgstr "Sei sicuro di voler eliminare il database sincronizzato di Calibre-Web e forzare una sincronizzazione completa con il tuo lettore Kobo?" +msgid "" +"Are you sure you want delete Calibre-Web's sync database to force a full sync" +" with your Kobo Reader?" +msgstr "" +"Sei sicuro di voler eliminare il database sincronizzato di Calibre-Web e" +" forzare una sincronizzazione completa con il tuo lettore Kobo?" #: cps/admin.py:875 cps/admin.py:881 cps/admin.py:891 cps/admin.py:901 #: cps/templates/modal_dialogs.html:29 cps/templates/user_table.html:41 @@ -224,11 +259,15 @@ msgstr "client_secrets.json non è configurato per Web Application" #: cps/admin.py:1153 msgid "Logfile Location is not Valid, Please Enter Correct Path" -msgstr "La posizione del file di log non è valida, per favore indica il percorso corretto" +msgstr "" +"La posizione del file di log non è valida, per favore indica il percorso" +" corretto" #: cps/admin.py:1159 msgid "Access Logfile Location is not Valid, Please Enter Correct Path" -msgstr "La posizione del file di log di accesso non è valida, per favore indica il percorso corretto" +msgstr "" +"La posizione del file di log di accesso non è valida, per favore indica il" +" percorso corretto" #: cps/admin.py:1193 msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier" @@ -249,7 +288,8 @@ msgstr "LDAP Group Object Filter deve avere un \"%s\" Format Identifier" #: cps/admin.py:1209 msgid "LDAP Group Object Filter Has Unmatched Parenthesis" -msgstr "LDAP Group Object Filter contiene una parentesi senza la corrispondenza" +msgstr "" +"LDAP Group Object Filter contiene una parentesi senza la corrispondenza" #: cps/admin.py:1213 #, python-format @@ -270,8 +310,12 @@ msgid "LDAP Member User Filter Has Unmatched Parenthesis" msgstr "LDAP Member User Filter contiene una parentesi senza la corrispondenza" #: cps/admin.py:1231 -msgid "LDAP CACertificate, Certificate or Key Location is not Valid, Please Enter Correct Path" -msgstr "LDAP CACertificate, il certificato o la posizione della chiave non sono corretti, per favore indica il percorso corretto" +msgid "" +"LDAP CACertificate, Certificate or Key Location is not Valid, Please Enter" +" Correct Path" +msgstr "" +"LDAP CACertificate, il certificato o la posizione della chiave non sono" +" corretti, per favore indica il percorso corretto" #: cps/admin.py:1262 cps/templates/admin.html:53 msgid "Add New User" @@ -296,8 +340,11 @@ msgstr "Errore nel database: %(error)s." #: cps/admin.py:1320 #, python-format -msgid "Test e-mail queued for sending to %(email)s, please check Tasks for result" -msgstr "L'e-mail di test è stato accodata con successo per essere spedita a %(email)s, per favore controlla le attività per il risultato" +msgid "" +"Test e-mail queued for sending to %(email)s, please check Tasks for result" +msgstr "" +"L'e-mail di test è stato accodata con successo per essere spedita a " +"%(email)s, per favore controlla le attività per il risultato" #: cps/admin.py:1323 #, python-format @@ -405,7 +452,8 @@ msgstr "Errore generale" #: cps/admin.py:1527 msgid "Update file could not be saved in temp dir" -msgstr "Il file di aggiornamento non può essere salvato nella cartella temporanea" +msgstr "" +"Il file di aggiornamento non può essere salvato nella cartella temporanea" #: cps/admin.py:1528 msgid "Files could not be replaced during update" @@ -438,7 +486,8 @@ msgstr "{} utente importato con successo" #: cps/admin.py:1707 msgid "DB Location is not Valid, Please Enter Correct Path" -msgstr "La posizione del DB non è valida, per favore indica il percorso corretto" +msgstr "" +"La posizione del DB non è valida, per favore indica il percorso corretto" #: cps/admin.py:1727 msgid "DB is not Writeable" @@ -446,11 +495,13 @@ msgstr "Il DB non è scrivibile" #: cps/admin.py:1740 msgid "Keyfile Location is not Valid, Please Enter Correct Path" -msgstr "La posizione del Keyfile non è valida, per favore indica il percorso corretto" +msgstr "" +"La posizione del Keyfile non è valida, per favore indica il percorso corretto" #: cps/admin.py:1744 msgid "Certfile Location is not Valid, Please Enter Correct Path" -msgstr "La posizione del Certfile non è valida, per favore indica il percorso corretto" +msgstr "" +"La posizione del Certfile non è valida, per favore indica il percorso corretto" #: cps/admin.py:1816 msgid "Password length has to be between 1 and 40" @@ -496,11 +547,13 @@ msgstr "Non posso eliminare l'utente Guest (ospite)" #: cps/admin.py:1959 msgid "No admin user remaining, can't delete user" -msgstr "Non rimarrebbe nessun utente amministratore, non posso eliminare l'utente" +msgstr "" +"Non rimarrebbe nessun utente amministratore, non posso eliminare l'utente" #: cps/admin.py:2014 cps/web.py:1438 msgid "Email can't be empty and has to be a valid Email" -msgstr "L'indirizzo e-mail non può essere vuoto e deve essere un recapito valido" +msgstr "" +"L'indirizzo e-mail non può essere vuoto e deve essere un recapito valido" #: cps/admin.py:2040 #, python-format @@ -518,7 +571,8 @@ msgstr "Mancano i permessi di esecuzione" #: cps/db.py:752 cps/search.py:137 cps/web.py:731 #, python-format msgid "Custom Column No.%(column)d does not exist in calibre database" -msgstr "La colonna personalizzata no.%(column)d non esiste nel database di Calibre" +msgstr "" +"La colonna personalizzata no.%(column)d non esiste nel database di Calibre" #: cps/db.py:993 cps/templates/config_edit.html:204 #: cps/templates/config_view_edit.html:62 cps/templates/email_edit.html:41 @@ -529,8 +583,10 @@ msgstr "Nessuna" #: cps/editbooks.py:111 cps/editbooks.py:899 cps/web.py:525 cps/web.py:1530 #: cps/web.py:1574 cps/web.py:1619 -msgid "Oops! Selected book is unavailable. File does not exist or is not accessible" -msgstr "Il libro selezionato non è disponibile. Il file non esiste o non è accessibile" +msgid "" +"Oops! Selected book is unavailable. File does not exist or is not accessible" +msgstr "" +"Il libro selezionato non è disponibile. Il file non esiste o non è accessibile" #: cps/editbooks.py:155 cps/editbooks.py:1227 msgid "User has no rights to upload cover" @@ -538,7 +594,9 @@ msgstr "L'utente non ha i permessi per caricare le copertine" #: cps/editbooks.py:175 cps/editbooks.py:720 msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" -msgstr "Gli identificatori non fanno distinzione tra maiuscole e minuscole, sovrascrivendo il vecchio identificatore" +msgstr "" +"Gli identificatori non fanno distinzione tra maiuscole e minuscole," +" sovrascrivendo il vecchio identificatore" #: cps/editbooks.py:217 msgid "Metadata successfully updated" @@ -555,7 +613,9 @@ msgstr "Il file %(file)s è stato caricato" #: cps/editbooks.py:320 msgid "Source or destination format for conversion missing" -msgstr "Mancano o il formato sorgente o quello di destinazione, entrambi necessari alla conversione" +msgstr "" +"Mancano o il formato sorgente o quello di destinazione, entrambi necessari" +" alla conversione" #: cps/editbooks.py:328 #, python-format @@ -568,8 +628,12 @@ msgid "There was an error converting this book: %(res)s" msgstr "Si è verificato un errore durante la conversione del libro: %(res)s" #: cps/editbooks.py:639 -msgid "Uploaded book probably exists in the library, consider to change before upload new: " -msgstr "Probabilmente il libro caricato esiste già nella libreria, cambialo prima di caricarlo nuovamente:" +msgid "" +"Uploaded book probably exists in the library, consider to change before" +" upload new: " +msgstr "" +"Probabilmente il libro caricato esiste già nella libreria, cambialo prima di" +" caricarlo nuovamente:" #: cps/editbooks.py:694 cps/editbooks.py:1019 #, python-format @@ -579,7 +643,8 @@ msgstr "%(langname)s non è una lingua valida" #: cps/editbooks.py:732 cps/editbooks.py:1167 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" -msgstr "Non è consentito caricare file con l'estensione '%(ext)s' su questo server" +msgstr "" +"Non è consentito caricare file con l'estensione '%(ext)s' su questo server" #: cps/editbooks.py:736 cps/editbooks.py:1171 msgid "File to be uploaded must have an extension" @@ -636,12 +701,20 @@ msgid "File format %(ext)s added to %(book)s" msgstr "Ho aggiunto il formato %(ext)s al libro %(book)s" #: cps/gdrive.py:58 -msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" -msgstr "La configurazione di Google Drive non è stata completata correttamente. Prova a disattivare e riattivare nuovamente Google Drive" +msgid "" +"Google Drive setup not completed, try to deactivate and activate Google Drive" +" again" +msgstr "" +"La configurazione di Google Drive non è stata completata correttamente. Prova" +" a disattivare e riattivare nuovamente Google Drive" #: cps/gdrive.py:95 -msgid "Callback domain is not verified, please follow steps to verify domain in google developer console" -msgstr "Il dominio di callback non è stato verificato. Per favore segui i passaggi per verificare il dominio nella console per sviluppatori di Google" +msgid "" +"Callback domain is not verified, please follow steps to verify domain in" +" google developer console" +msgstr "" +"Il dominio di callback non è stato verificato. Per favore segui i passaggi" +" per verificare il dominio nella console per sviluppatori di Google" #: cps/helper.py:81 #, python-format @@ -708,8 +781,11 @@ msgstr "Impossibile impostare lo stato di lettura: {}" #: cps/helper.py:365 #, python-format -msgid "Deleting bookfolder for book %(id)s failed, path has subfolders: %(path)s" -msgstr "L'eliminazione della cartella del libro %(id)s non è riuscita, il percorso ha delle sottocartelle: %(path)s" +msgid "" +"Deleting bookfolder for book %(id)s failed, path has subfolders: %(path)s" +msgstr "" +"L'eliminazione della cartella del libro %(id)s non è riuscita, il percorso ha" +" delle sottocartelle: %(path)s" #: cps/helper.py:371 #, python-format @@ -718,13 +794,20 @@ msgstr "L'eliminazione del libro %(id)s non è riuscita: %(message)s" #: cps/helper.py:382 #, python-format -msgid "Deleting book %(id)s from database only, book path in database not valid: %(path)s" -msgstr "Eliminazione del libro %(id)s unicamente dal database. Il percorso del libro nel database non è valido: %(path)s" +msgid "" +"Deleting book %(id)s from database only, book path in database not valid: " +"%(path)s" +msgstr "" +"Eliminazione del libro %(id)s unicamente dal database. Il percorso del libro" +" nel database non è valido: %(path)s" #: cps/helper.py:447 #, python-format -msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" -msgstr "La modifica dell'autore da '%(src)s' a '%(dest)s' è terminata con l'errore: %(error)s" +msgid "" +"Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" +msgstr "" +"La modifica dell'autore da '%(src)s' a '%(dest)s' è terminata con l'errore: " +"%(error)s" #: cps/helper.py:519 cps/helper.py:528 #, python-format @@ -734,7 +817,9 @@ msgstr "File %(file)s non trovato su Google Drive" #: cps/helper.py:562 #, python-format msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s" -msgstr "La modifica del titolo da '%(src)s' a '%(dest)s' è terminata con l'errore: %(error)s" +msgstr "" +"La modifica del titolo da '%(src)s' a '%(dest)s' è terminata con l'errore: " +"%(error)s" #: cps/helper.py:582 msgid "Error in rename file in path: {}" @@ -762,8 +847,11 @@ msgid "Password doesn't comply with password validation rules" msgstr "La password non è conforme alle regole di convalida della password" #: cps/helper.py:852 -msgid "Python module 'advocate' is not installed but is needed for cover uploads" -msgstr "Il modulo Python 'advocate' non è installato, ma è necessario per caricare le copertine" +msgid "" +"Python module 'advocate' is not installed but is needed for cover uploads" +msgstr "" +"Il modulo Python 'advocate' non è installato, ma è necessario per caricare le" +" copertine" #: cps/helper.py:862 msgid "Error Downloading Cover" @@ -774,8 +862,11 @@ msgid "Cover Format Error" msgstr "Errore nel formato della copertina" #: cps/helper.py:868 -msgid "You are not allowed to access localhost or the local network for cover uploads" -msgstr "Non sei autorizzato ad accedere a localhost o alla rete locale per caricare le copertine" +msgid "" +"You are not allowed to access localhost or the local network for cover uploads" +msgstr "" +"Non sei autorizzato ad accedere a localhost o alla rete locale per caricare" +" le copertine" #: cps/helper.py:878 msgid "Failed to create path for cover" @@ -783,11 +874,15 @@ msgstr "Errore nel creare il percorso per la copertina" #: cps/helper.py:894 msgid "Cover-file is not a valid image file, or could not be stored" -msgstr "Il file della copertina non è in un formato immagine valido o non può essere salvato" +msgstr "" +"Il file della copertina non è in un formato immagine valido o non può essere" +" salvato" #: cps/helper.py:905 msgid "Only jpg/jpeg/png/webp/bmp files are supported as coverfile" -msgstr "Solamente i file nei formati jpg/jpeg/png/webp/bmp sono supportati per le copertine" +msgstr "" +"Solamente i file nei formati jpg/jpeg/png/webp/bmp sono supportati per le" +" copertine" #: cps/helper.py:917 msgid "Invalid cover file content" @@ -814,8 +909,12 @@ msgid "Queue all books for metadata backup" msgstr "Metti in coda tutti i libri per il backup dei metadati" #: cps/kobo_auth.py:90 -msgid "Please access Calibre-Web from non localhost to get valid api_endpoint for kobo device" -msgstr "Per favore accedi a Calibe-Web non da localhost per ottenere un api_endpoint valido per il lettore kobo" +msgid "" +"Please access Calibre-Web from non localhost to get valid api_endpoint for" +" kobo device" +msgstr "" +"Per favore accedi a Calibe-Web non da localhost per ottenere un api_endpoint" +" valido per il lettore kobo" #: cps/kobo_auth.py:116 msgid "Kobo Setup" @@ -838,7 +937,8 @@ msgstr "Collegamento a %(oauth)s avvenuto con successo" #: cps/oauth_bb.py:155 msgid "Login failed, No User Linked With OAuth Account" -msgstr "Accesso non riuscito, non c'è nessun utente collegato all'account OAuth" +msgstr "" +"Accesso non riuscito, non c'è nessun utente collegato all'account OAuth" #: cps/oauth_bb.py:197 #, python-format @@ -1080,7 +1180,8 @@ msgstr "Stato di lettura = %(status)s" #: cps/search.py:323 msgid "Error on search for custom columns, please restart Calibre-Web" -msgstr "Errore di ricerca nelle colonne personalizzate. Per favore riavvia Calibre-Web" +msgstr "" +"Errore di ricerca nelle colonne personalizzate. Per favore riavvia Calibre-Web" #: cps/search.py:342 cps/search.py:374 cps/templates/layout.html:57 msgid "Advanced Search" @@ -1092,7 +1193,8 @@ msgstr "Lo scaffale specificato non è valido" #: cps/shelf.py:55 msgid "Sorry you are not allowed to add a book to that shelf" -msgstr "Mi spiace, ma non sei autorizzato ad aggiungere libri a questo scaffale" +msgstr "" +"Mi spiace, ma non sei autorizzato ad aggiungere libri a questo scaffale" #: cps/shelf.py:64 #, python-format @@ -1192,7 +1294,9 @@ msgstr "Scaffale: '%(name)s'" #: cps/shelf.py:469 msgid "Error opening shelf. Shelf does not exist or is not accessible" -msgstr "Errore durante l'apertura dello scaffale. Lo scaffale non esiste o non è accessibile" +msgstr "" +"Errore durante l'apertura dello scaffale. Lo scaffale non esiste o non è" +" accessibile" #: cps/tasks_status.py:46 cps/templates/layout.html:88 #: cps/templates/tasks.html:7 @@ -1236,8 +1340,12 @@ msgid "No update available. You already have the latest version installed" msgstr "Nessun aggiornamento disponibile. Hai già l'ultima versione installata" #: cps/updater.py:456 -msgid "A new update is available. Click on the button below to update to the latest version." -msgstr "È disponibile un nuovo aggiornamento. Fare clic sul pulsante in basso per aggiornare all'ultima versione" +msgid "" +"A new update is available. Click on the button below to update to the latest" +" version." +msgstr "" +"È disponibile un nuovo aggiornamento. Fare clic sul pulsante in basso per" +" aggiornare all'ultima versione" #: cps/updater.py:474 msgid "Could not fetch update information" @@ -1245,12 +1353,18 @@ msgstr "Impossibile recuperare le informazioni sull'aggiornamento" #: cps/updater.py:484 msgid "Click on the button below to update to the latest stable version." -msgstr "Fare clic sul pulsante in basso per eseguire l'aggiornamento all'ultima versione stabile." +msgstr "" +"Fare clic sul pulsante in basso per eseguire l'aggiornamento all'ultima" +" versione stabile." #: cps/updater.py:493 cps/updater.py:507 cps/updater.py:518 #, python-format -msgid "A new update is available. Click on the button below to update to version: %(version)s" -msgstr "È disponibile un nuovo aggiornamento. Fare clic sul pulsante in basso per aggiornare alla versione:%(version)s" +msgid "" +"A new update is available. Click on the button below to update to version: " +"%(version)s" +msgstr "" +"È disponibile un nuovo aggiornamento. Fare clic sul pulsante in basso per" +" aggiornare alla versione:%(version)s" #: cps/updater.py:536 msgid "No release information available" @@ -1350,8 +1464,10 @@ msgid "Register" msgstr "Registrati" #: cps/web.py:1259 cps/web.py:1306 -msgid "Oops! Email server is not configured, please contact your administrator." -msgstr "Il server e-mail non è configurato, per favore contatta l'amministratore" +msgid "" +"Oops! Email server is not configured, please contact your administrator." +msgstr "" +"Il server e-mail non è configurato, per favore contatta l'amministratore" #: cps/web.py:1292 msgid "Oops! Your Email is not allowed." @@ -1376,8 +1492,12 @@ msgstr "ora sei connesso come: '%(nickname)s'" #: cps/web.py:1376 #, python-format -msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" -msgstr "Accesso di riserva come: '%(nickname)s', il server LDAP non è raggiungibile o l'utente è sconosciuto" +msgid "" +"Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not" +" known" +msgstr "" +"Accesso di riserva come: '%(nickname)s', il server LDAP non è raggiungibile o" +" l'utente è sconosciuto" #: cps/web.py:1381 #, python-format @@ -1449,7 +1569,9 @@ msgstr "Si è verificato un errore con il convertitore Kepubify: %(error)s" #: cps/tasks/convert.py:224 #, python-format msgid "Converted file not found or more than one file in folder %(folder)s" -msgstr "Non ho trovato il file convertito o c'è più di un file nella cartella %(folder)s" +msgstr "" +"Non ho trovato il file convertito o c'è più di un file nella cartella " +"%(folder)s" #: cps/tasks/convert.py:247 #, python-format @@ -1882,8 +2004,11 @@ msgid "Rating" msgstr "Valutazione" #: cps/templates/book_edit.html:104 -msgid "Fetch Cover from URL (JPEG - Image will be downloaded and stored in database)" -msgstr "Carica la copertina da URL (jpeg - l'immagine della copertina viene scaricata e salvata nel database)" +msgid "" +"Fetch Cover from URL (JPEG - Image will be downloaded and stored in database)" +msgstr "" +"Carica la copertina da URL (jpeg - l'immagine della copertina viene scaricata" +" e salvata nel database)" #: cps/templates/book_edit.html:108 msgid "Upload Cover from Local Disk" @@ -2113,7 +2238,8 @@ msgstr "Revoca" #: cps/templates/config_db.html:68 msgid "New db location is invalid, please enter valid path" -msgstr "La nuova posizione del database non è valida, inserisci un percorso valido" +msgstr "" +"La nuova posizione del database non è valida, inserisci un percorso valido" #: cps/templates/config_edit.html:18 msgid "Server Configuration" @@ -2125,11 +2251,15 @@ msgstr "Porta del server" #: cps/templates/config_edit.html:28 msgid "SSL certfile location (leave it empty for non-SSL Servers)" -msgstr "Posizione del file del certificato SSL (lascia vuoto per una configurazione del server senza SSL)" +msgstr "" +"Posizione del file del certificato SSL (lascia vuoto per una configurazione" +" del server senza SSL)" #: cps/templates/config_edit.html:35 msgid "SSL Keyfile location (leave it empty for non-SSL Servers)" -msgstr "Posizione del file della chiave SSL (lascia vuoto per una configurazione del server senza SSL)" +msgstr "" +"Posizione del file della chiave SSL (lascia vuoto per una configurazione del" +" server senza SSL)" #: cps/templates/config_edit.html:43 msgid "Update Channel" @@ -2153,7 +2283,8 @@ msgstr "Configurazione del file di log" #: cps/templates/config_edit.html:77 msgid "Location and name of logfile (calibre-web.log for no entry)" -msgstr "Posizione e nome del file di log (se non specificato sarà calibre-web.log)" +msgstr "" +"Posizione e nome del file di log (se non specificato sarà calibre-web.log)" #: cps/templates/config_edit.html:82 msgid "Enable Access Log" @@ -2161,7 +2292,9 @@ msgstr "Abilita il log degli accessi" #: cps/templates/config_edit.html:85 msgid "Location and name of access logfile (access.log for no entry)" -msgstr "Posizione e nome del file di log degli accessi (se non specificato sarà access.log)" +msgstr "" +"Posizione e nome del file di log degli accessi (se non specificato sarà" +" access.log)" #: cps/templates/config_edit.html:96 msgid "Feature Configuration" @@ -2169,7 +2302,9 @@ msgstr "Ulteriori opzioni" #: cps/templates/config_edit.html:104 msgid "Convert non-English characters in title and author while saving to disk" -msgstr "Converti caratteri non inglesi del titolo e dell'autore durante il salvataggio su disco" +msgstr "" +"Converti caratteri non inglesi del titolo e dell'autore durante il" +" salvataggio su disco" #: cps/templates/config_edit.html:108 msgid "Enable Uploads" @@ -2177,7 +2312,9 @@ msgstr "Abilita il caricamento" #: cps/templates/config_edit.html:108 msgid "(Please ensure that users also have upload permissions)" -msgstr "(per favore assicurati che gli utenti abbiano anche i permessi per caricare i file)" +msgstr "" +"(per favore assicurati che gli utenti abbiano anche i permessi per caricare i" +" file)" #: cps/templates/config_edit.html:112 msgid "Allowed Upload Fileformats" @@ -2268,16 +2405,24 @@ msgid "SSL" msgstr "SSL" #: cps/templates/config_edit.html:210 -msgid "LDAP CACertificate Path (Only needed for Client Certificate Authentication)" -msgstr "Percorso del CACertificate LDAP (necessario unicamente in caso di Client Certificate Authentication)" +msgid "" +"LDAP CACertificate Path (Only needed for Client Certificate Authentication)" +msgstr "" +"Percorso del CACertificate LDAP (necessario unicamente in caso di Client" +" Certificate Authentication)" #: cps/templates/config_edit.html:217 -msgid "LDAP Certificate Path (Only needed for Client Certificate Authentication)" -msgstr "Percorso del certificato LDAP (necessario unicamente in caso di Client Certificate Authentication)" +msgid "" +"LDAP Certificate Path (Only needed for Client Certificate Authentication)" +msgstr "" +"Percorso del certificato LDAP (necessario unicamente in caso di Client" +" Certificate Authentication)" #: cps/templates/config_edit.html:224 msgid "LDAP Keyfile Path (Only needed for Client Certificate Authentication)" -msgstr "Percorso della chiave LDAP (necessario unicamente in caso di Client Certificate Authentication)" +msgstr "" +"Percorso della chiave LDAP (necessario unicamente in caso di Client" +" Certificate Authentication)" #: cps/templates/config_edit.html:233 msgid "LDAP Authentication" @@ -2317,7 +2462,8 @@ msgstr "Il server LDAP è OpenLDAP?" #: cps/templates/config_edit.html:264 msgid "Following Settings are Needed For User Import" -msgstr "Le seguenti impostazioni sono necessarie per l'importazione degli utenti" +msgstr "" +"Le seguenti impostazioni sono necessarie per l'importazione degli utenti" #: cps/templates/config_edit.html:266 msgid "LDAP Group Object Filter" @@ -2436,7 +2582,8 @@ msgstr "Numero di libri casuali da mostrare" #: cps/templates/config_view_edit.html:36 msgid "No. of Authors to Display Before Hiding (0=Disable Hiding)" -msgstr "Numero di autori da mostrare prima di nascondere (0=disabilita nascondere)" +msgstr "" +"Numero di autori da mostrare prima di nascondere (0=disabilita nascondere)" #: cps/templates/config_view_edit.html:40 cps/templates/readcbr.html:101 msgid "Theme" @@ -2659,8 +2806,11 @@ msgid "Next" msgstr "Prossimo" #: cps/templates/generate_kobo_auth_url.html:6 -msgid "Open the .kobo/Kobo/Kobo eReader.conf file in a text editor and add (or edit):" -msgstr "Apri il file .kobo/Kobo/Kobo eReader.conf in un editor di testo e aggiungi (o modifica):" +msgid "" +"Open the .kobo/Kobo/Kobo eReader.conf file in a text editor and add (or edit):" +msgstr "" +"Apri il file .kobo/Kobo/Kobo eReader.conf in un editor di testo e aggiungi (o" +" modifica):" #: cps/templates/generate_kobo_auth_url.html:11 msgid "Kobo Token:" @@ -2672,7 +2822,8 @@ msgstr "Elenco" #: cps/templates/http_error.html:34 msgid "Calibre-Web Instance is unconfigured, please contact your administrator" -msgstr "L'istanza Calibre-Web non è configurata, per favore contatta l'amministratore" +msgstr "" +"L'istanza Calibre-Web non è configurata, per favore contatta l'amministratore" #: cps/templates/http_error.html:44 msgid "Create Issue" @@ -2892,7 +3043,8 @@ msgstr "Seleziona le categorie consentite/negate per l'utente" #: cps/templates/modal_dialogs.html:9 msgid "Select Allowed/Denied Custom Column Values of User" -msgstr "Seleziona i valori personali consentiti/negati per le colonne dell'utente" +msgstr "" +"Seleziona i valori personali consentiti/negati per le colonne dell'utente" #: cps/templates/modal_dialogs.html:15 msgid "Enter Tag" @@ -2915,12 +3067,19 @@ msgid "and hard disk" msgstr "e dal disco rigido" #: cps/templates/modal_dialogs.html:56 -msgid "Important Kobo Note: deleted books will remain on any paired Kobo device." -msgstr "Osservazione importante riguardo Kobo: i libri eliminati, rimarranno in ogni lettore Kobo accoppiato." +msgid "" +"Important Kobo Note: deleted books will remain on any paired Kobo device." +msgstr "" +"Osservazione importante riguardo Kobo: i libri eliminati, rimarranno in ogni" +" lettore Kobo accoppiato." #: cps/templates/modal_dialogs.html:57 -msgid "Books must first be archived and the device synced before a book can safely be deleted." -msgstr "Prima di poter eliminare in sicurezza un libro, occorre che il libro venga archiviato e che l'apparecchio venga sincronizzato." +msgid "" +"Books must first be archived and the device synced before a book can safely" +" be deleted." +msgstr "" +"Prima di poter eliminare in sicurezza un libro, occorre che il libro venga" +" archiviato e che l'apparecchio venga sincronizzato." #: cps/templates/modal_dialogs.html:76 msgid "Choose File Location" @@ -3096,11 +3255,11 @@ msgstr "Da destra a sinistra" #: cps/templates/readcbr.html:162 msgid "Reset to Top" -msgstr "" +msgstr "Reimposta in alto" #: cps/templates/readcbr.html:163 msgid "Remember Position" -msgstr "" +msgstr "Ricorda la posizione" #: cps/templates/readcbr.html:168 msgid "Scrollbar" @@ -3311,12 +3470,18 @@ msgid "Actions" msgstr "Azioni" #: cps/templates/tasks.html:40 -msgid "This task will be cancelled. Any progress made by this task will be saved." -msgstr "Questa attività verrà annullata. Tutti i progressi compiuti da questa attività verranno salvati." +msgid "" +"This task will be cancelled. Any progress made by this task will be saved." +msgstr "" +"Questa attività verrà annullata. Tutti i progressi compiuti da questa" +" attività verranno salvati." #: cps/templates/tasks.html:41 -msgid "If this is a scheduled task, it will be re-ran during the next scheduled time." -msgstr "Se si tratta di un'attività pianificata, verrà eseguita nuovamente durante il prossimo orario pianificato." +msgid "" +"If this is a scheduled task, it will be re-ran during the next scheduled time." +msgstr "" +"Se si tratta di un'attività pianificata, verrà eseguita nuovamente durante il" +" prossimo orario pianificato." #: cps/templates/user_edit.html:20 msgid "Reset user Password" @@ -3450,3 +3615,4 @@ msgstr "Sincronizza gli scaffali selezionati con Kobo" msgid "Show Read/Unread Section" msgstr "Mostra la sezione letto/da leggere" + From c550d6c90d680120f92cf8696947a539c53eeacf Mon Sep 17 00:00:00 2001 From: Ozzie Isaacs Date: Sat, 28 Oct 2023 07:50:01 +0200 Subject: [PATCH 09/10] Fix comic reader arrow visiblilty for one paged comic files Changed logging during kobo sync --- cps/kobo.py | 2 +- cps/static/js/kthoom.js | 19 ++++++++----------- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/cps/kobo.py b/cps/kobo.py index ee394509..0a968081 100644 --- a/cps/kobo.py +++ b/cps/kobo.py @@ -315,7 +315,7 @@ def generate_sync_response(sync_token, sync_results, set_cont=False): extra_headers["x-kobo-recent-reads"] = store_response.headers.get("x-kobo-recent-reads") except Exception as ex: - log.error("Failed to receive or parse response from Kobo's sync endpoint: {}".format(ex)) + log.error_or_exception("Failed to receive or parse response from Kobo's sync endpoint: {}".format(ex)) if set_cont: extra_headers["x-kobo-sync"] = "continue" sync_token.to_headers(extra_headers) diff --git a/cps/static/js/kthoom.js b/cps/static/js/kthoom.js index 33e4b2fc..67b18fc1 100644 --- a/cps/static/js/kthoom.js +++ b/cps/static/js/kthoom.js @@ -179,26 +179,23 @@ kthoom.ImageFile = function(file) { }; function updateDirectionButtons(){ - $("#right").show(); - $("#left").show(); + var left, right = 1; if (currentImage == 0 ) { if (settings.direction === 0) { - $("#right").show(); - $("#left").hide(); + left = 0; } else { - $("#left").show(); - $("#right").hide(); + right = 0; } } if ((currentImage + 1) >= Math.max(totalImages, imageFiles.length)) { if (settings.direction === 0) { - $("#left").show(); - $("#right").hide(); + right = 0; } else { - $("#right").show(); - $("#left").hide(); - } + left = 0; + } } + left === 1 ? $("#left").show() : $("#left").hide(); + right === 1 ? $("#right").show() : $("#right").hide(); } function initProgressClick() { $("#progress").click(function(e) { From 5e3d0ec2ada972b74123bf51f320a0ee6951f7c9 Mon Sep 17 00:00:00 2001 From: Ozzie Isaacs Date: Sat, 28 Oct 2023 08:25:43 +0200 Subject: [PATCH 10/10] Fix location of config files for executable files (#2917) --- cps/constants.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cps/constants.py b/cps/constants.py index e8c52a68..18c4f1b1 100644 --- a/cps/constants.py +++ b/cps/constants.py @@ -34,6 +34,8 @@ UPDATER_AVAILABLE = True # Base dir is parent of current file, necessary if called from different folder BASE_DIR = os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)), os.pardir)) +# if executable file the files should be placed in the parent dir (parallel to the exe file) + STATIC_DIR = os.path.join(BASE_DIR, 'cps', 'static') TEMPLATES_DIR = os.path.join(BASE_DIR, 'cps', 'templates') TRANSLATIONS_DIR = os.path.join(BASE_DIR, 'cps', 'translations') @@ -49,6 +51,9 @@ if HOME_CONFIG: CONFIG_DIR = os.environ.get('CALIBRE_DBPATH', home_dir) else: CONFIG_DIR = os.environ.get('CALIBRE_DBPATH', BASE_DIR) + if getattr(sys, 'frozen', False): + CONFIG_DIR = os.path.abspath(os.path.join(CONFIG_DIR, os.pardir)) + DEFAULT_SETTINGS_FILE = "app.db" DEFAULT_GDRIVE_FILE = "gdrive.db"