diff --git a/cps/gdriveutils.py b/cps/gdriveutils.py index 49ab5882..7e4c662b 100644 --- a/cps/gdriveutils.py +++ b/cps/gdriveutils.py @@ -64,7 +64,7 @@ except ImportError as err: importError = err gdrive_support = False -from . import logger, cli_param, config +from . import logger, cli_param, config, db from .constants import CONFIG_DIR as _CONFIG_DIR @@ -265,7 +265,7 @@ def getFile(pathId, fileName, drive, nocase): if fileList.__len__() == 0: return None if nocase: - return fileList[0] + return fileList[0] if db.lcase(fileList[0]['title']) == db.lcase(fileName) else None for f in fileList: if f['title'] == fileName: return f @@ -273,8 +273,6 @@ def getFile(pathId, fileName, drive, nocase): def getFolderId(path, drive): - # drive = getDrive(drive) - log.info(f"GetFolder: {path}") currentFolderId = None try: currentFolderId = getEbooksFolderId(drive) @@ -348,16 +346,23 @@ def moveGdriveFolderRemote(origin_file, target_folder, single_book=False): previous_parents = ",".join([parent["id"] for parent in origin_file.get('parents')]) children = drive.auth.service.children().list(folderId=previous_parents).execute() if single_book: - # gFileTargetDir = getFileFromEbooksFolder(None, target_folder, nocase=True) - gFileTargetDir = drive.CreateFile( - {'title': target_folder, 'parents': [{"kind": "drive#fileLink", 'id': getEbooksFolderId()}], - "mimeType": "application/vnd.google-apps.folder"}) - gFileTargetDir.Upload() - # Move the file to the new folder - drive.auth.service.files().update(fileId=origin_file['id'], - addParents=gFileTargetDir['id'], - removeParents=previous_parents, - fields='id, parents').execute() + gFileTargetDir = getFileFromEbooksFolder(None, target_folder, nocase=True) + if gFileTargetDir: + # Move the file to the new folder + drive.auth.service.files().update(fileId=origin_file['id'], + addParents=gFileTargetDir['id'], + removeParents=previous_parents, + fields='id, parents').execute() + else: + gFileTargetDir = drive.CreateFile( + {'title': target_folder, 'parents': [{"kind": "drive#fileLink", 'id': getEbooksFolderId()}], + "mimeType": "application/vnd.google-apps.folder"}) + gFileTargetDir.Upload() + # Move the file to the new folder + drive.auth.service.files().update(fileId=origin_file['id'], + addParents=gFileTargetDir['id'], + removeParents=previous_parents, + fields='id, parents').execute() elif origin_file['title'] != target_folder: #gFileTargetDir = getFileFromEbooksFolder(None, target_folder, nocase=True) #if gFileTargetDir: @@ -366,12 +371,7 @@ def moveGdriveFolderRemote(origin_file, target_folder, single_book=False): drive.auth.service.files().patch(fileId=origin_file['id'], body={'title': target_folder}, fields='title').execute() - '''else: - # Move the file to the new folder - drive.auth.service.files().update(fileId=origin_file['id'], - addParents=gFileTargetDir['id'], - removeParents=previous_parents, - fields='id, parents').execute()''' + # if previous_parents has no children anymore, delete original fileparent if len(children['items']) == 1: deleteDatabaseEntry(previous_parents) diff --git a/cps/helper.py b/cps/helper.py index b3bf3c9a..84e46a24 100644 --- a/cps/helper.py +++ b/cps/helper.py @@ -525,7 +525,7 @@ def update_dir_structure_gdrive(book_id, first_author): new_titledir = get_valid_filename(book.title, chars=96) + " (" + str(book_id) + ")" if titledir != new_titledir: - g_file = gd.getFileFromEbooksFolder(os.path.dirname(book.path), titledir) + g_file = gd.getFileFromEbooksFolder(authordir, titledir) if g_file: gd.moveGdriveFileRemote(g_file, new_titledir) book.path = book.path.split('/')[0] + '/' + new_titledir @@ -612,7 +612,7 @@ def delete_book_gdrive(book, book_format): for entry in book.data: if entry.format.upper() == book_format: name = entry.name + '.' + book_format - g_file = gd.getFileFromEbooksFolder(book.path, name) + g_file = gd.getFileFromEbooksFolder(book.path, name, nocase=True) else: g_file = gd.getFileFromEbooksFolder(os.path.dirname(book.path), book.path.split('/')[1]) if g_file: diff --git a/optional-requirements.txt b/optional-requirements.txt index e097746f..77f41e1e 100644 --- a/optional-requirements.txt +++ b/optional-requirements.txt @@ -1,5 +1,5 @@ # GDrive Integration -google-api-python-client>=1.7.11,<2.120.0 +google-api-python-client>=1.7.11,<2.200.0 gevent>20.6.0,<24.3.0 greenlet>=0.4.17,<3.1.0 httplib2>=0.9.2,<0.23.0 @@ -13,7 +13,7 @@ rsa>=3.4.2,<4.10.0 # Gmail google-auth-oauthlib>=0.4.3,<1.3.0 -google-api-python-client>=1.7.11,<2.120.0 +google-api-python-client>=1.7.11,<2.200.0 # goodreads goodreads>=0.3.2,<0.4.0 diff --git a/test/Calibre-Web TestSummary_Linux.html b/test/Calibre-Web TestSummary_Linux.html index b799e9aa..9a4bf126 100644 --- a/test/Calibre-Web TestSummary_Linux.html +++ b/test/Calibre-Web TestSummary_Linux.html @@ -37,20 +37,20 @@
-

Start Time: 2024-06-29 20:48:57

+

Start Time: 2024-07-01 20:28:34

-

Stop Time: 2024-06-30 03:48:15

+

Stop Time: 2024-07-02 03:50:44

-

Duration: 5h 44 min

+

Duration: 6h 9 min

@@ -852,12 +852,12 @@ - + TestEbookConvertCalibreGDrive 6 - 6 - 0 + 5 0 + 1 0 Detail @@ -875,11 +875,33 @@ - +
TestEbookConvertCalibreGDrive - test_convert_failed_and_email
- PASS + +
+ ERROR +
+ + + + @@ -1695,11 +1717,11 @@ - + TestEditAuthorsGdrive 7 - 5 - 2 + 7 + 0 0 0 @@ -1727,31 +1749,11 @@ - +
TestEditAuthorsGdrive - test_change_capital_one_author_two_books
- -
- FAIL -
- - - - + PASS @@ -1765,31 +1767,11 @@ AssertionError: <selenium.webdriver.remote.webelement.WebElement (session= - +
TestEditAuthorsGdrive - test_change_capital_rename_co_author
- -
- FAIL -
- - - - + PASS @@ -1813,12 +1795,12 @@ AssertionError: False is not true - + TestEditBooksList 19 - 15 - 3 - 1 + 19 + 0 + 0 0 Detail @@ -1829,7 +1811,7 @@ AssertionError: False is not true -
TestEditBooksList - test_booklist_xss: r = requests.session()
+
TestEditBooksList - test_booklist_xss
PASS @@ -1962,204 +1944,38 @@ AssertionError: False is not true - +
TestEditBooksList - test_bookslist_edit_title
- -
- ERROR -
- - - - + PASS - +
TestEditBooksList - test_list_visibility
- -
- FAIL -
- - - - + PASS - +
TestEditBooksList - test_restricted_rights
- -
- FAIL -
- - - - + PASS - +
TestEditBooksList - test_search_books_list
- -
- FAIL -
- - - - - - - - - - - _ErrorHolder - 2 - 0 - 0 - 2 - 0 - - Detail - - - - - - - -
tearDownClass (test_edit_books_list)
- - -
- ERROR -
- - - - - - - - - - -
setUpClass (test_pip_install)
- - -
- ERROR -
- - - - + PASS @@ -2173,25 +1989,25 @@ NameError: name 'make_release' is not defined 1 0 - Detail + Detail - +
TestLoadMetadata - test_load_metadata
- ERROR + ERROR
-