diff --git a/src/calibre/ebooks/metadata/__init__.py b/src/calibre/ebooks/metadata/__init__.py
index 6b573a0420..c633e5149b 100644
--- a/src/calibre/ebooks/metadata/__init__.py
+++ b/src/calibre/ebooks/metadata/__init__.py
@@ -30,7 +30,7 @@ def authors_to_string(authors):
def author_to_author_sort(author):
method = tweaks['author_sort_copy_method']
- if method == 'copy' or (method == 'comma' and author.count(',') > 0):
+ if method == 'copy' or (method == 'comma' and ',' in author):
return author
tokens = author.split()
tokens = tokens[-1:] + tokens[:-1]
diff --git a/src/calibre/ebooks/metadata/opf2.py b/src/calibre/ebooks/metadata/opf2.py
index 1f321568f5..3367ab14f6 100644
--- a/src/calibre/ebooks/metadata/opf2.py
+++ b/src/calibre/ebooks/metadata/opf2.py
@@ -741,7 +741,7 @@ class OPF(object):
def fset(self, val):
for tag in list(self.tags_path(self.metadata)):
- self.metadata.remove(tag)
+ tag.getparent().remove(tag)
for tag in val:
elem = self.create_metadata_element('subject')
self.set_text(elem, unicode(tag))
diff --git a/src/calibre/gui2/dialogs/edit_authors_dialog.ui b/src/calibre/gui2/dialogs/edit_authors_dialog.ui
index 4ac133700f..d124f1498d 100644
--- a/src/calibre/gui2/dialogs/edit_authors_dialog.ui
+++ b/src/calibre/gui2/dialogs/edit_authors_dialog.ui
@@ -6,8 +6,8 @@
0
0
- 410
- 239
+ 730
+ 342
@@ -47,9 +47,6 @@
- buttonBox
- table
- buttonBox
diff --git a/src/calibre/gui2/library/models.py b/src/calibre/gui2/library/models.py
index ff4b2b6ee9..8080769377 100644
--- a/src/calibre/gui2/library/models.py
+++ b/src/calibre/gui2/library/models.py
@@ -420,8 +420,11 @@ class BooksModel(QAbstractTableModel): # {{{
pt.orig_file_path = os.path.abspath(src.name)
pt.seek(0)
if set_metadata:
- _set_metadata(pt, self.db.get_metadata(id, get_cover=True, index_is_id=True),
+ try:
+ _set_metadata(pt, self.db.get_metadata(id, get_cover=True, index_is_id=True),
format)
+ except:
+ traceback.print_exc()
pt.close()
def to_uni(x):
if isbytestring(x):
diff --git a/src/calibre/gui2/tag_view.py b/src/calibre/gui2/tag_view.py
index 83463128bd..9cc90ca83f 100644
--- a/src/calibre/gui2/tag_view.py
+++ b/src/calibre/gui2/tag_view.py
@@ -13,8 +13,8 @@ from functools import partial
from PyQt4.Qt import Qt, QTreeView, QApplication, pyqtSignal, QCheckBox, \
QFont, QSize, QIcon, QPoint, QVBoxLayout, QComboBox, \
QAbstractItemModel, QVariant, QModelIndex, QMenu, \
- QPushButton, QWidget
-from PyQt4.Qt import QItemDelegate, QString, QPen, QColor, QLinearGradient, QBrush
+ QPushButton, QWidget, QItemDelegate, QString, QPen, \
+ QColor, QLinearGradient, QBrush
from calibre.gui2 import config, NONE
from calibre.utils.config import prefs, tweaks
diff --git a/src/calibre/library/schema_upgrades.py b/src/calibre/library/schema_upgrades.py
index fcf27c4183..a8ffd9cde4 100644
--- a/src/calibre/library/schema_upgrades.py
+++ b/src/calibre/library/schema_upgrades.py
@@ -308,10 +308,10 @@ class SchemaUpgrade(object):
{vcn},
(SELECT COUNT(id) FROM books_{tn}_link WHERE {cn}={tn}.id) count,
(SELECT AVG(ratings.rating)
- FROM books_{tn}_link as tl, books_ratings_link as bl, ratings
- WHERE tl.{cn}={tn}.id and bl.book=tl.book and
- ratings.id = bl.rating and ratings.rating <> 0) avg_rating,
- {scn} as sort
+ FROM books_{tn}_link AS tl, books_ratings_link AS bl, ratings
+ WHERE tl.{cn}={tn}.id AND bl.book=tl.book AND
+ ratings.id = bl.rating AND ratings.rating <> 0) avg_rating,
+ {scn} AS sort
FROM {tn};
DROP VIEW IF EXISTS tag_browser_filtered_{tn};
CREATE VIEW tag_browser_filtered_{tn} AS SELECT
@@ -320,11 +320,11 @@ class SchemaUpgrade(object):
(SELECT COUNT(books_{tn}_link.id) FROM books_{tn}_link WHERE
{cn}={tn}.id AND books_list_filter(book)) count,
(SELECT AVG(ratings.rating)
- FROM books_{tn}_link as tl, books_ratings_link as bl, ratings
- WHERE tl.{cn}={tn}.id and bl.book=tl.book and
- ratings.id = bl.rating and ratings.rating <> 0 AND
+ FROM books_{tn}_link AS tl, books_ratings_link AS bl, ratings
+ WHERE tl.{cn}={tn}.id AND bl.book=tl.book AND
+ ratings.id = bl.rating AND ratings.rating <> 0 AND
books_list_filter(bl.book)) avg_rating,
- {scn} as sort
+ {scn} AS sort
FROM {tn};
'''.format(tn=table_name, cn=column_name,
@@ -340,11 +340,11 @@ class SchemaUpgrade(object):
(SELECT COUNT(id) FROM {lt} WHERE value={table}.id) count,
(SELECT AVG(r.rating)
FROM {lt},
- books_ratings_link as bl,
- ratings as r
- WHERE {lt}.value={table}.id and bl.book={lt}.book and
- r.id = bl.rating and r.rating <> 0) avg_rating,
- value as sort
+ books_ratings_link AS bl,
+ ratings AS r
+ WHERE {lt}.value={table}.id AND bl.book={lt}.book AND
+ r.id = bl.rating AND r.rating <> 0) avg_rating,
+ value AS sort
FROM {table};
DROP VIEW IF EXISTS tag_browser_filtered_{table};
@@ -355,12 +355,12 @@ class SchemaUpgrade(object):
books_list_filter(book)) count,
(SELECT AVG(r.rating)
FROM {lt},
- books_ratings_link as bl,
- ratings as r
+ books_ratings_link AS bl,
+ ratings AS r
WHERE {lt}.value={table}.id AND bl.book={lt}.book AND
r.id = bl.rating AND r.rating <> 0 AND
books_list_filter(bl.book)) avg_rating,
- value as sort
+ value AS sort
FROM {table};
'''.format(lt=link_table_name, table=table_name)
self.conn.executescript(script)
@@ -396,15 +396,17 @@ class SchemaUpgrade(object):
(author_to_author_sort(author.replace('|', ',')).strip(), id))
self.conn.commit()
self.conn.executescript('''
+ DROP TRIGGER IF EXISTS author_insert_trg;
CREATE TRIGGER author_insert_trg
AFTER INSERT ON authors
BEGIN
UPDATE authors SET sort=author_to_author_sort(NEW.name) WHERE id=NEW.id;
END;
+ DROP TRIGGER IF EXISTS author_update_trg;
CREATE TRIGGER author_update_trg
BEFORE UPDATE ON authors
BEGIN
UPDATE authors SET sort=author_to_author_sort(NEW.name)
- WHERE id=NEW.id and name <> NEW.name;
+ WHERE id=NEW.id AND name <> NEW.name;
END;
- ''')
\ No newline at end of file
+ ''')