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 + ''')