From 239407d73b1c1f95108c8934f0ee0cc1d623390e Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 19 Aug 2013 11:16:15 +0530 Subject: [PATCH] Switch to newdb Remove the use_newdb_tweak and various bits of code used to support dual use. --- src/calibre/db/__init__.py | 14 ------ src/calibre/db/categories.py | 7 ++- src/calibre/debug.py | 54 ++------------------- src/calibre/gui2/actions/choose_library.py | 4 +- src/calibre/gui2/actions/copy_to_library.py | 4 +- src/calibre/gui2/dialogs/check_library.py | 2 +- src/calibre/gui2/dialogs/choose_library.py | 3 +- src/calibre/gui2/dialogs/restore_library.py | 6 +-- src/calibre/gui2/init.py | 28 ++++------- src/calibre/gui2/main.py | 12 ++--- src/calibre/gui2/preferences/look_feel.py | 6 +-- src/calibre/gui2/tag_browser/model.py | 2 +- src/calibre/gui2/ui.py | 10 ++-- src/calibre/gui2/wizard/__init__.py | 17 +++---- src/calibre/library/__init__.py | 4 +- src/calibre/library/cli.py | 20 +++----- src/calibre/library/move.py | 4 +- src/calibre/library/server/main.py | 4 +- 18 files changed, 55 insertions(+), 146 deletions(-) diff --git a/src/calibre/db/__init__.py b/src/calibre/db/__init__.py index 78f05da8ac..f59612449a 100644 --- a/src/calibre/db/__init__.py +++ b/src/calibre/db/__init__.py @@ -122,17 +122,3 @@ def get_data_as_dict(self, prefix=None, authors_as_string=False, ids=None, conve x['available_formats'] = [i.upper() for i in formats.split(',')] return data - -def get_db_loader(): - from calibre.utils.config_base import tweaks - if tweaks.get('use_new_db', False): - from calibre.db.legacy import LibraryDatabase as cls - import apsw - errs = (apsw.Error,) - else: - from calibre.library.database2 import LibraryDatabase2 as cls - from calibre.library.sqlite import sqlite, DatabaseException - errs = (sqlite.Error, DatabaseException) - return cls, errs - - diff --git a/src/calibre/db/categories.py b/src/calibre/db/categories.py index ebd50750a3..c86801f086 100644 --- a/src/calibre/db/categories.py +++ b/src/calibre/db/categories.py @@ -21,10 +21,9 @@ CATEGORY_SORTS = ('name', 'popularity', 'rating') # This has to be a tuple not class Tag(object): - if tweaks.get('use_new_db', False): - __slots__ = ('name', 'original_name', 'id', 'count', 'state', 'is_hierarchical', - 'is_editable', 'is_searchable', 'id_set', 'avg_rating', 'sort', - 'use_sort_as_name', 'tooltip', 'icon', 'category') + __slots__ = ('name', 'original_name', 'id', 'count', 'state', 'is_hierarchical', + 'is_editable', 'is_searchable', 'id_set', 'avg_rating', 'sort', + 'use_sort_as_name', 'tooltip', 'icon', 'category') def __init__(self, name, id=None, count=0, state=0, avg=0, sort=None, tooltip=None, icon=None, category=None, id_set=None, diff --git a/src/calibre/debug.py b/src/calibre/debug.py index 906fe2f3c4..904ee11be8 100644 --- a/src/calibre/debug.py +++ b/src/calibre/debug.py @@ -84,7 +84,7 @@ Everything after the -- is passed to the script. return parser -def reinit_db_new(dbpath, callback=None, sql_dump=None): +def reinit_db(dbpath, callback=None, sql_dump=None): from calibre.db.backend import Connection import apsw import shutil @@ -92,6 +92,8 @@ def reinit_db_new(dbpath, callback=None, sql_dump=None): from contextlib import closing if callback is None: callback = lambda x, y: None + if not os.path.exists(dbpath): + raise ValueError(dbpath + ' does not exist') with closing(Connection(dbpath)) as conn: uv = int(conn.get('PRAGMA user_version;', all=False)) @@ -117,56 +119,6 @@ def reinit_db_new(dbpath, callback=None, sql_dump=None): os.remove(dest) prints('Database successfully re-initialized') - -def reinit_db(dbpath, callback=None, sql_dump=None): - if not os.path.exists(dbpath): - raise ValueError(dbpath + ' does not exist') - from calibre.utils.config_base import tweaks - if tweaks.get('use_new_db', False): - return reinit_db_new(dbpath, callback, sql_dump) - - from calibre.library.sqlite import connect - from contextlib import closing - import shutil - conn = connect(dbpath, False) - uv = conn.get('PRAGMA user_version;', all=False) - conn.execute('PRAGMA writable_schema=ON') - conn.commit() - if sql_dump is None: - sql_lines = conn.dump() - else: - sql_lines = open(sql_dump, 'rb').read() - conn.close() - dest = dbpath + '.tmp' - try: - with closing(connect(dest, False)) as nconn: - nconn.execute('create temporary table temp_sequence(id INTEGER PRIMARY KEY AUTOINCREMENT)') - nconn.commit() - if sql_dump is None: - if callable(callback): - callback(len(sql_lines), True) - for i, line in enumerate(sql_lines): - try: - nconn.execute(line) - except: - import traceback - prints('SQL line %r failed with error:'%line) - prints(traceback.format_exc()) - continue - finally: - if callable(callback): - callback(i, False) - else: - nconn.executescript(sql_lines) - nconn.execute('pragma user_version=%d'%int(uv)) - nconn.commit() - os.remove(dbpath) - shutil.copyfile(dest, dbpath) - finally: - if os.path.exists(dest): - os.remove(dest) - prints('Database successfully re-initialized') - def debug_device_driver(): from calibre.devices import debug debug(ioreg_to_tmp=True, buf=sys.stdout) diff --git a/src/calibre/gui2/actions/choose_library.py b/src/calibre/gui2/actions/choose_library.py index 6b70bddf6a..daaa893bab 100644 --- a/src/calibre/gui2/actions/choose_library.py +++ b/src/calibre/gui2/actions/choose_library.py @@ -22,8 +22,8 @@ from calibre.gui2 import (gprefs, warning_dialog, Dispatcher, error_dialog, from calibre.gui2.actions import InterfaceAction def db_class(): - from calibre.db import get_db_loader - return get_db_loader()[0] + from calibre.db.legacy import LibraryDatabase + return LibraryDatabase class LibraryUsageStats(object): # {{{ diff --git a/src/calibre/gui2/actions/copy_to_library.py b/src/calibre/gui2/actions/copy_to_library.py index f32f060de7..b93efa1dc4 100644 --- a/src/calibre/gui2/actions/copy_to_library.py +++ b/src/calibre/gui2/actions/copy_to_library.py @@ -55,8 +55,8 @@ class Worker(Thread): # {{{ notify=False, replace=replace) def doit(self): - from calibre.db import get_db_loader - newdb = get_db_loader()[0](self.loc, is_second_db=True) + from calibre.db.legacy import LibraryDatabase + newdb = LibraryDatabase(self.loc, is_second_db=True) with closing(newdb): self._doit(newdb) newdb.break_cycles() diff --git a/src/calibre/gui2/dialogs/check_library.py b/src/calibre/gui2/dialogs/check_library.py index c1f8ed4f18..73dcadd596 100644 --- a/src/calibre/gui2/dialogs/check_library.py +++ b/src/calibre/gui2/dialogs/check_library.py @@ -13,7 +13,7 @@ from PyQt4.Qt import (QDialog, QVBoxLayout, QHBoxLayout, QTreeWidget, QLabel, from calibre.gui2.dialogs.confirm_delete import confirm from calibre.library.check_library import CheckLibrary, CHECKS -from calibre.library.database2 import delete_file, delete_tree +from calibre.utils.recycle_bin import delete_file, delete_tree from calibre import prints, as_unicode from calibre.ptempfile import PersistentTemporaryFile from calibre.library.sqlite import DBThread, OperationalError diff --git a/src/calibre/gui2/dialogs/choose_library.py b/src/calibre/gui2/dialogs/choose_library.py index 52e8ef644a..1659a47b8f 100644 --- a/src/calibre/gui2/dialogs/choose_library.py +++ b/src/calibre/gui2/dialogs/choose_library.py @@ -85,8 +85,7 @@ class ChooseLibrary(QDialog, Ui_Dialog): show=True) return False if ac in ('new', 'move'): - from calibre.db import get_db_loader - LibraryDatabase = get_db_loader()[0] + from calibre.db.legacy import LibraryDatabase if not empty: error_dialog(self, _('Not empty'), _('The folder %s is not empty. Please choose an empty' diff --git a/src/calibre/gui2/dialogs/restore_library.py b/src/calibre/gui2/dialogs/restore_library.py index 58731fa2d0..a00151f563 100644 --- a/src/calibre/gui2/dialogs/restore_library.py +++ b/src/calibre/gui2/dialogs/restore_library.py @@ -12,7 +12,6 @@ from calibre.gui2 import (error_dialog, question_dialog, warning_dialog, info_dialog) from calibre import force_unicode from calibre.constants import filesystem_encoding -from calibre.utils.config_base import tweaks class DBRestore(QDialog): @@ -42,10 +41,7 @@ class DBRestore(QDialog): self.library_path = library_path self.update_signal.connect(self.do_update, type=Qt.QueuedConnection) - if tweaks.get('use_new_db', False): - from calibre.db.restore import Restore - else: - from calibre.library.restore import Restore + from calibre.db.restore import Restore self.restorer = Restore(library_path, self) self.restorer.daemon = True diff --git a/src/calibre/gui2/init.py b/src/calibre/gui2/init.py index de0a58d7bb..a37c693eb6 100644 --- a/src/calibre/gui2/init.py +++ b/src/calibre/gui2/init.py @@ -10,7 +10,7 @@ import functools from PyQt4.Qt import (Qt, QApplication, QStackedWidget, QMenu, QTimer, QSize, QSizePolicy, QStatusBar, QLabel, QFont, QAction, QTabBar) -from calibre.utils.config import prefs, tweaks +from calibre.utils.config import prefs from calibre.utils.icu import sort_key from calibre.constants import (isosx, __appname__, preferred_encoding, get_version) @@ -171,8 +171,6 @@ class StatusBar(QStatusBar): # {{{ QStatusBar.__init__(self, parent) self.version = get_version() self.base_msg = '%s %s' % (__appname__, self.version) - if tweaks.get('use_new_db', False): - self.base_msg += ' [newdb]' self.device_string = '' self.update_label = UpdateLabel('') self.total = self.current = self.selected = self.library_total = 0 @@ -249,18 +247,13 @@ class GridViewButton(LayoutButton): # {{{ def __init__(self, gui): sc = _('Shift+Alt+G') LayoutButton.__init__(self, I('grid.png'), _('Cover Grid'), parent=gui, shortcut=sc) - if tweaks.get('use_new_db', False): - self.set_state_to_show() - self.action_toggle = QAction(self.icon(), _('Toggle') + ' ' + self.label, self) - gui.addAction(self.action_toggle) - gui.keyboard.register_shortcut('grid view toggle' + self.label, unicode(self.action_toggle.text()), - default_keys=(sc,), action=self.action_toggle) - self.action_toggle.triggered.connect(self.toggle) - self.toggled.connect(self.update_state) - self.grid_enabled = True - else: - self.setVisible(False) - self.grid_enabled = False + self.set_state_to_show() + self.action_toggle = QAction(self.icon(), _('Toggle') + ' ' + self.label, self) + gui.addAction(self.action_toggle) + gui.keyboard.register_shortcut('grid view toggle' + self.label, unicode(self.action_toggle.text()), + default_keys=(sc,), action=self.action_toggle) + self.action_toggle.triggered.connect(self.toggle) + self.toggled.connect(self.update_state) def update_state(self, checked): if checked: @@ -269,11 +262,10 @@ class GridViewButton(LayoutButton): # {{{ self.set_state_to_show() def save_state(self): - if self.grid_enabled: - gprefs['grid view visible'] = bool(self.isChecked()) + gprefs['grid view visible'] = bool(self.isChecked()) def restore_state(self): - if self.grid_enabled and gprefs.get('grid view visible', False): + if gprefs.get('grid view visible', False): self.toggle() diff --git a/src/calibre/gui2/main.py b/src/calibre/gui2/main.py index d6d6abcf26..28dcd5dc34 100644 --- a/src/calibre/gui2/main.py +++ b/src/calibre/gui2/main.py @@ -4,12 +4,14 @@ __copyright__ = '2008, Kovid Goyal ' import sys, os, time, socket, traceback from functools import partial +import apsw from PyQt4.Qt import (QCoreApplication, QIcon, QObject, QTimer, QPixmap, QSplashScreen, QApplication) from calibre import prints, plugins, force_unicode from calibre.constants import (iswindows, __appname__, isosx, DEBUG, islinux, filesystem_encoding, get_portable_base) +from calibre.db.legacy import LibraryDatabase from calibre.utils.ipc import gui_socket_address, RC from calibre.gui2 import (ORG_NAME, APP_UID, initialize_file_icon_provider, Application, choose_dir, error_dialog, question_dialog, gprefs) @@ -222,7 +224,7 @@ class GuiRunner(QObject): try: self.library_path = candidate - db = self.db_class(candidate) + db = LibraryDatabase(candidate) except: error_dialog(self.splash_screen, _('Bad database location'), _('Bad database location %r. calibre will now quit.' @@ -239,12 +241,10 @@ class GuiRunner(QObject): det_msg=traceback.format_exc(), show=True) def initialize_db(self): - from calibre.db import get_db_loader db = None - self.db_class, errs = get_db_loader() try: - db = self.db_class(self.library_path) - except errs: + db = LibraryDatabase(self.library_path) + except apsw.Error: repair = question_dialog(self.splash_screen, _('Corrupted database'), _('The library database at %s appears to be corrupted. Do ' 'you want calibre to try and rebuild it automatically? ' @@ -255,7 +255,7 @@ class GuiRunner(QObject): ) if repair: if repair_library(self.library_path): - db = self.db_class(self.library_path) + db = LibraryDatabase(self.library_path) except: error_dialog(self.splash_screen, _('Bad database location'), _('Bad database location %r. Will start with ' diff --git a/src/calibre/gui2/preferences/look_feel.py b/src/calibre/gui2/preferences/look_feel.py index db993a0424..369ae59375 100644 --- a/src/calibre/gui2/preferences/look_feel.py +++ b/src/calibre/gui2/preferences/look_feel.py @@ -17,7 +17,7 @@ from calibre.gui2.preferences.look_feel_ui import Ui_Form from calibre.gui2 import config, gprefs, qt_app, NONE, open_local_file from calibre.utils.localization import (available_translations, get_language, get_lang) -from calibre.utils.config import prefs, tweaks +from calibre.utils.config import prefs from calibre.utils.icu import sort_key from calibre.gui2.book_details import get_field_list from calibre.gui2.preferences.coloring import EditRules @@ -210,10 +210,6 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form): self.fs_help_msg.setText(unicode(self.fs_help_msg.text())%( _(' or ').join(keys))) self.cover_grid_color_button.clicked.connect(self.change_cover_grid_color) - if not tweaks.get('use_new_db', False): - for i in range(self.tabWidget.count()): - if self.tabWidget.widget(i) is self.cover_grid_tab: - self.tabWidget.removeTab(i) self.size_calculated.connect(self.update_cg_cache_size, type=Qt.QueuedConnection) self.tabWidget.currentChanged.connect(self.tab_changed) self.cover_grid_empty_cache.clicked.connect(self.empty_cache) diff --git a/src/calibre/gui2/tag_browser/model.py b/src/calibre/gui2/tag_browser/model.py index 9705b9cadc..48ac9045dd 100644 --- a/src/calibre/gui2/tag_browser/model.py +++ b/src/calibre/gui2/tag_browser/model.py @@ -15,7 +15,7 @@ from PyQt4.Qt import (QAbstractItemModel, QIcon, QVariant, QFont, Qt, from calibre.constants import config_dir from calibre.gui2 import NONE, gprefs, config, error_dialog -from calibre.library.database2 import Tag +from calibre.db.categories import Tag from calibre.utils.config import tweaks from calibre.utils.icu import sort_key, lower, strcmp, collation_order from calibre.library.field_metadata import TagsIcons, category_icon_map diff --git a/src/calibre/gui2/ui.py b/src/calibre/gui2/ui.py index 4cec88cf05..925300b619 100644 --- a/src/calibre/gui2/ui.py +++ b/src/calibre/gui2/ui.py @@ -14,6 +14,7 @@ from Queue import Queue, Empty from threading import Thread from collections import OrderedDict +import apsw from PyQt4.Qt import (Qt, SIGNAL, QTimer, QHelpEvent, QAction, QMenu, QIcon, pyqtSignal, QUrl, QFont, QDialog, QSystemTrayIcon, QApplication) @@ -22,7 +23,7 @@ from calibre import prints, force_unicode from calibre.constants import __appname__, isosx, filesystem_encoding, DEBUG from calibre.utils.config import prefs, dynamic from calibre.utils.ipc.server import Server -from calibre.db import get_db_loader +from calibre.db.legacy import LibraryDatabase from calibre.customize.ui import interface_actions, available_store_plugins from calibre.gui2 import (error_dialog, GetMetadata, open_url, gprefs, max_available_height, config, info_dialog, Dispatcher, @@ -585,10 +586,9 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, EmailMixin, # {{{ unload_user_template_functions(olddb.library_id) except: olddb = None - db_class, errs = get_db_loader() try: - db = db_class(newloc, default_prefs=default_prefs) - except errs: + db = LibraryDatabase(newloc, default_prefs=default_prefs) + except apsw.Error: if not allow_rebuild: raise import traceback @@ -602,7 +602,7 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, EmailMixin, # {{{ if repair: from calibre.gui2.dialogs.restore_library import repair_library_at if repair_library_at(newloc, parent=self): - db = db_class(newloc, default_prefs=default_prefs) + db = LibraryDatabase(newloc, default_prefs=default_prefs) else: return else: diff --git a/src/calibre/gui2/wizard/__init__.py b/src/calibre/gui2/wizard/__init__.py index 00fd3bdb29..572e6a8bfe 100644 --- a/src/calibre/gui2/wizard/__init__.py +++ b/src/calibre/gui2/wizard/__init__.py @@ -14,6 +14,7 @@ from contextlib import closing from PyQt4.Qt import (QWizard, QWizardPage, QPixmap, Qt, QAbstractListModel, QVariant, QItemSelectionModel, SIGNAL, QObject, QTimer, pyqtSignal) from calibre import __appname__, patheq +from calibre.db.legacy import LibraryDatabase from calibre.library.move import MoveLibrary from calibre.constants import (filesystem_encoding, iswindows, plugins, isportable) @@ -33,10 +34,6 @@ from calibre.customize.ui import device_plugins if iswindows: winutil = plugins['winutil'][0] -def db_class(): - from calibre.db import get_db_loader - return get_db_loader()[0] - # Devices {{{ class Device(object): @@ -626,7 +623,7 @@ def move_library(oldloc, newloc, parent, callback_on_complete): if oldloc and os.access(os.path.join(oldloc, 'metadata.db'), os.R_OK): # Move old library to new location try: - db = db_class()(oldloc) + db = LibraryDatabase(oldloc) except: return move_library(None, newloc, parent, callback) @@ -639,13 +636,13 @@ def move_library(oldloc, newloc, parent, callback_on_complete): return else: # Create new library at new location - db = db_class()(newloc) + db = LibraryDatabase(newloc) callback(newloc) return # Try to load existing library at new location try: - db_class()(newloc) + LibraryDatabase(newloc) except Exception as err: det = traceback.format_exc() error_dialog(parent, _('Invalid database'), @@ -732,7 +729,7 @@ class LibraryPage(QWizardPage, LibraryUI): def is_library_dir_suitable(self, x): try: - return db_class().exists_at(x) or not os.listdir(x) + return LibraryDatabase.exists_at(x) or not os.listdir(x) except: return False @@ -748,10 +745,10 @@ class LibraryPage(QWizardPage, LibraryUI): _('Select location for books')) if x: if (iswindows and len(x) > - db_class().WINDOWS_LIBRARY_PATH_LIMIT): + LibraryDatabase.WINDOWS_LIBRARY_PATH_LIMIT): return error_dialog(self, _('Too long'), _('Path to library too long. Must be less than' - ' %d characters.')%(db_class().WINDOWS_LIBRARY_PATH_LIMIT), + ' %d characters.')%(LibraryDatabase.WINDOWS_LIBRARY_PATH_LIMIT), show=True) if not os.path.exists(x): try: diff --git a/src/calibre/library/__init__.py b/src/calibre/library/__init__.py index e219d764d5..d622a75b3d 100644 --- a/src/calibre/library/__init__.py +++ b/src/calibre/library/__init__.py @@ -3,9 +3,9 @@ __copyright__ = '2008, Kovid Goyal ' ''' Code to manage ebook library''' def db(path=None, read_only=False): - from calibre.db import get_db_loader + from calibre.db.legacy import LibraryDatabase from calibre.utils.config import prefs - return get_db_loader()[0](path if path else prefs['library_path'], + return LibraryDatabase(path if path else prefs['library_path'], read_only=read_only) diff --git a/src/calibre/library/cli.py b/src/calibre/library/cli.py index 325fa6cefe..89989102e2 100644 --- a/src/calibre/library/cli.py +++ b/src/calibre/library/cli.py @@ -13,21 +13,18 @@ from textwrap import TextWrapper from calibre import preferred_encoding, prints, isbytestring, patheq from calibre.constants import iswindows +from calibre.db.legacy import LibraryDatabase from calibre.utils.config import OptionParser, prefs, tweaks from calibre.ebooks.metadata.meta import get_metadata from calibre.ebooks.metadata.book.base import field_from_string from calibre.ebooks.metadata.opf2 import OPFCreator, OPF from calibre.utils.date import isoformat -from calibre.db import get_db_loader FIELDS = set(['title', 'authors', 'author_sort', 'publisher', 'rating', 'timestamp', 'size', 'tags', 'comments', 'series', 'series_index', 'formats', 'isbn', 'uuid', 'pubdate', 'cover', 'last_modified', 'identifiers']) -def db_class(): - return get_db_loader()[0] - do_notify = True def send_message(msg=''): global do_notify @@ -66,7 +63,7 @@ def get_db(dbpath, options): dbpath = os.path.abspath(dbpath) if options.dont_notify_gui: do_notify = False - return db_class()(dbpath) + return LibraryDatabase(dbpath) def do_list(db, fields, afields, sort_by, ascending, search_text, line_width, separator, prefix, limit, subtitle='Books in the calibre database'): @@ -1108,7 +1105,7 @@ def command_backup_metadata(args, dbpath): dbpath = opts.library_path if isbytestring(dbpath): dbpath = dbpath.decode(preferred_encoding) - db = db_class()(dbpath) + db = LibraryDatabase(dbpath) book_ids = None if opts.all: book_ids = db.all_ids() @@ -1190,7 +1187,7 @@ def command_check_library(args, dbpath): for i in list: print ' %-40.40s - %-40.40s'%(i[0], i[1]) - db = db_class()(dbpath) + db = LibraryDatabase(dbpath) checker = CheckLibrary(dbpath, db) checker.scan_library(names, exts) for check in checks: @@ -1245,10 +1242,7 @@ def command_restore_database(args, dbpath): self.total = float(step) else: prints(msg, '...', '%d%%'%int(100*(step/self.total))) - if tweaks.get('use_new_db', False): - from calibre.db.restore import Restore - else: - from calibre.library.restore import Restore + from calibre.db.restore import Restore r = Restore(dbpath, progress_callback=Progress()) r.start() r.join() @@ -1306,7 +1300,7 @@ def command_list_categories(args, dbpath): if isbytestring(dbpath): dbpath = dbpath.decode(preferred_encoding) - db = db_class()(dbpath) + db = LibraryDatabase(dbpath) category_data = db.get_categories() data = [] report_on = [c.strip() for c in opts.report.split(',') if c.strip()] @@ -1425,8 +1419,6 @@ def command_clone(args, dbpath): if not empty: prints(_('%s is not empty. You must choose an empty directory for the new library.') % loc) return 1 - from calibre.db import get_db_loader - LibraryDatabase = get_db_loader()[0] if iswindows and len(loc) > LibraryDatabase.WINDOWS_LIBRARY_PATH_LIMIT: prints(_('Path to library too long. Must be less than' ' %d characters.')%LibraryDatabase.WINDOWS_LIBRARY_PATH_LIMIT) diff --git a/src/calibre/library/move.py b/src/calibre/library/move.py index ccebaa0302..5423216a80 100644 --- a/src/calibre/library/move.py +++ b/src/calibre/library/move.py @@ -15,9 +15,9 @@ from calibre.utils.ipc.job import ParallelJob def move_library(from_, to, notification=lambda x:x): - from calibre.db import get_db_loader + from calibre.db.legacy import LibraryDatabase time.sleep(1) - old = get_db_loader()[0](from_) + old = LibraryDatabase(from_) old.move_library_to(to, notification) return True diff --git a/src/calibre/library/server/main.py b/src/calibre/library/server/main.py index a97eb53618..d38960da67 100644 --- a/src/calibre/library/server/main.py +++ b/src/calibre/library/server/main.py @@ -100,7 +100,7 @@ def daemonize(stdin='/dev/null', stdout='/dev/null', stderr='/dev/null'): def main(args=sys.argv): - from calibre.db import get_db_loader + from calibre.db.legacy import LibraryDatabase parser = option_parser() opts, args = parser.parse_args(args) if opts.daemonize and not iswindows: @@ -116,7 +116,7 @@ def main(args=sys.argv): print('No saved library path. Use the --with-library option' ' to specify the path to the library you want to use.') return 1 - db = get_db_loader()[0](opts.with_library) + db = LibraryDatabase(opts.with_library) server = LibraryServer(db, opts, show_tracebacks=opts.develop) server.start() return 0