From ac77f31bc20ba0121e38977f5b7cbff20183508d Mon Sep 17 00:00:00 2001 From: Jim Miller Date: Sun, 19 Apr 2026 09:02:32 -0500 Subject: [PATCH] Move NotGoingToDownload to exceptions.py #1337 --- calibre-plugin/dialogs.py | 10 +--------- calibre-plugin/fff_plugin.py | 18 +++++++++--------- calibre-plugin/jobs.py | 2 +- fanficfare/exceptions.py | 9 +++++++++ 4 files changed, 20 insertions(+), 19 deletions(-) diff --git a/calibre-plugin/dialogs.py b/calibre-plugin/dialogs.py index 93bf3f0b..e074ac94 100644 --- a/calibre-plugin/dialogs.py +++ b/calibre-plugin/dialogs.py @@ -38,6 +38,7 @@ from calibre.gui2 import gprefs show_download_options = 'fff:add new/update dialogs:show_download_options' from calibre.gui2.dialogs.confirm_delete import confirm from calibre.gui2.complete2 import EditWithComplete +from fanficfare.exceptions import NotGoingToDownload from fanficfare.six import text_type as unicode, ensure_text # pulls in translation files for _() strings @@ -155,15 +156,6 @@ class RejectUrlEntry: return retval -class NotGoingToDownload(Exception): - def __init__(self,error,icon='dialog_error.png',showerror=True): - self.error=error - self.icon=icon - self.showerror=showerror - - def __str__(self): - return self.error - class DroppableQTextEdit(QTextEdit): def __init__(self,parent): QTextEdit.__init__(self,parent) diff --git a/calibre-plugin/fff_plugin.py b/calibre-plugin/fff_plugin.py index 142723ac..09fd4119 100644 --- a/calibre-plugin/fff_plugin.py +++ b/calibre-plugin/fff_plugin.py @@ -99,7 +99,7 @@ from calibre_plugins.fanficfare_plugin.dialogs import ( LoopProgressDialog, UserPassDialog, AboutDialog, CollectURLDialog, RejectListDialog, EmailPassDialog, TOTPDialog, save_collisions, question_dialog_all, - NotGoingToDownload, RejectUrlEntry, IniTextDialog, + RejectUrlEntry, IniTextDialog, EditTextDialog) # because calibre immediately transforms html into zip and don't want @@ -1324,11 +1324,11 @@ class FanFicFarePlugin(InterfaceAction): ## network hit. identicalbooks = self.do_id_search(url) if collision == SKIP and identicalbooks: - raise NotGoingToDownload(_("Skipping duplicate story."),"list_remove.png") + raise exceptions.NotGoingToDownload(_("Skipping duplicate story."),"list_remove.png") # Dialogs should prevent this case now. if collision in (UPDATE,UPDATEALWAYS) and fileform != 'epub': - raise NotGoingToDownload(_("Cannot update non-epub format.")) + raise exceptions.NotGoingToDownload(_("Cannot update non-epub format.")) if not book['good']: # book has already been flagged bad for whatever reason. @@ -1522,7 +1522,7 @@ class FanFicFarePlugin(InterfaceAction): logger.debug("existing found by identifier URL") if collision == SKIP and identicalbooks: - raise NotGoingToDownload(_("Skipping duplicate story."),"list_remove.png") + raise exceptions.NotGoingToDownload(_("Skipping duplicate story."),"list_remove.png") if len(identicalbooks) > 1: identicalbooks_msg = _("More than one identical book by Identifier URL or title/author(s)--can't tell which book to update/overwrite.") @@ -1553,7 +1553,7 @@ class FanFicFarePlugin(InterfaceAction): identicalbooks = [] collision = book['collision'] = ADDNEW else: - raise NotGoingToDownload(identicalbooks_msg,"minusminus.png") + raise exceptions.NotGoingToDownload(identicalbooks_msg,"minusminus.png") ## changed: add new book when CALIBREONLY if none found. if collision in (CALIBREONLY, CALIBREONLYSAVECOL) and not identicalbooks: @@ -1640,11 +1640,11 @@ class FanFicFarePlugin(InterfaceAction): # returns int adjusted for start-end range. urlchaptercount = story.getChapterCount() if chaptercount == urlchaptercount and collision == UPDATE: - raise NotGoingToDownload(_("Already contains %d chapters.")%chaptercount,'edit-undo.png',showerror=False) + raise exceptions.NotGoingToDownload(_("Already contains %d chapters.")%chaptercount,'edit-undo.png',showerror=False) elif chaptercount > urlchaptercount and not (collision == UPDATEALWAYS and adapter.getConfig('force_update_epub_always')): - raise NotGoingToDownload(_("Existing epub contains %d chapters, web site only has %d. Use Overwrite or force_update_epub_always to force update.") % (chaptercount,urlchaptercount),'dialog_error.png') + raise exceptions.NotGoingToDownload(_("Existing epub contains %d chapters, web site only has %d. Use Overwrite or force_update_epub_always to force update.") % (chaptercount,urlchaptercount),'dialog_error.png') elif chaptercount == 0: - raise NotGoingToDownload(_("FanFicFare doesn't recognize chapters in existing epub, epub is probably from a different source. Use Overwrite to force update."),'dialog_error.png') + raise exceptions.NotGoingToDownload(_("FanFicFare doesn't recognize chapters in existing epub, epub is probably from a different source. Use Overwrite to force update."),'dialog_error.png') if collision == OVERWRITE and \ db.has_format(book_id,formmapping[fileform],index_is_id=True): @@ -1661,7 +1661,7 @@ class FanFicFarePlugin(InterfaceAction): # updated does have time, use full timestamps. if (lastupdated.time() == time.min and fileupdated.date() > lastupdated.date()) or \ (lastupdated.time() != time.min and fileupdated > lastupdated): - raise NotGoingToDownload(_("Not Overwriting, web site is not newer."),'edit-undo.png',showerror=False) + raise exceptions.NotGoingToDownload(_("Not Overwriting, web site is not newer."),'edit-undo.png',showerror=False) # For update, provide a tmp file copy of the existing epub so # it can't change underneath us. Now also overwrite for logpage preserve. diff --git a/calibre-plugin/jobs.py b/calibre-plugin/jobs.py index f140f863..7d855746 100644 --- a/calibre-plugin/jobs.py +++ b/calibre-plugin/jobs.py @@ -133,13 +133,13 @@ def do_download_for_worker(book,options,merge,notification=lambda x,y:x): fffbase = FanFicFareBase(options['plugin_path']) with fffbase: # so the sys.path was modified while loading the # plug impl. - from calibre_plugins.fanficfare_plugin.dialogs import NotGoingToDownload from calibre_plugins.fanficfare_plugin.prefs import ( SAVE_YES, SAVE_YES_UNLESS_SITE, OVERWRITE, OVERWRITEALWAYS, UPDATE, UPDATEALWAYS, ADDNEW, SKIP, CALIBREONLY, CALIBREONLYSAVECOL) from calibre_plugins.fanficfare_plugin.wordcount import get_word_count from fanficfare import adapters, writers from fanficfare.epubutils import get_update_data + from fanficfare.exceptions import NotGoingToDownload from fanficfare.six import text_type as unicode from calibre_plugins.fanficfare_plugin.fff_util import get_fff_config diff --git a/fanficfare/exceptions.py b/fanficfare/exceptions.py index edc01a79..c2257f37 100644 --- a/fanficfare/exceptions.py +++ b/fanficfare/exceptions.py @@ -148,3 +148,12 @@ class HTTPErrorFFF(Exception): class BrowserCacheException(Exception): pass +class NotGoingToDownload(Exception): + def __init__(self,error,icon='dialog_error.png',showerror=True): + self.error=error + self.icon=icon + self.showerror=showerror + + def __str__(self): + return self.error +