From 9184d8cd0a8e27ce5605630009aa48bd4d4e2f72 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 4 Feb 2011 16:58:51 -0700 Subject: [PATCH 1/2] ... --- src/calibre/gui2/dialogs/metadata_single.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/calibre/gui2/dialogs/metadata_single.py b/src/calibre/gui2/dialogs/metadata_single.py index aec8c4fd60..3e711edd2d 100644 --- a/src/calibre/gui2/dialogs/metadata_single.py +++ b/src/calibre/gui2/dialogs/metadata_single.py @@ -951,8 +951,8 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): for w in getattr(self, 'custom_column_widgets', []): self.books_to_refresh |= w.commit(self.id) self.db.commit() - except IOError, err: - if err.errno == 13: # Permission denied + except (IOError, OSError) as err: + if getattr(err, 'errno', -1) == 13: # Permission denied fname = err.filename if err.filename else 'file' return error_dialog(self, _('Permission denied'), _('Could not open %s. Is it being used by another' From 480fd141e00c92e030f13ab4d327da29519e7e54 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Sat, 5 Feb 2011 05:11:24 +0000 Subject: [PATCH 2/2] Fix #8765: Custom series like column weird behaviour --- src/calibre/gui2/library/models.py | 10 ++++++++++ src/calibre/library/custom_columns.py | 4 +++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/calibre/gui2/library/models.py b/src/calibre/gui2/library/models.py index 0b6991665b..2f8a747c39 100644 --- a/src/calibre/gui2/library/models.py +++ b/src/calibre/gui2/library/models.py @@ -791,6 +791,16 @@ class BooksModel(QAbstractTableModel): # {{{ val = qt_to_dt(val, as_utc=False) elif typ == 'series': val = unicode(value.toString()).strip() + if val: + pat = re.compile(r'\[([.0-9]+)\]') + match = pat.search(val) + if match is not None: + s_index = float(match.group(1)) + val = pat.sub('', val).strip() + elif val: + if tweaks['series_index_auto_increment'] != 'const': + s_index = self.db.get_next_cc_series_num_for(val, + label=label, num=None) elif typ == 'composite': tmpl = unicode(value.toString()).strip() disp = cc['display'] diff --git a/src/calibre/library/custom_columns.py b/src/calibre/library/custom_columns.py index 467a3f309e..cb735dc529 100644 --- a/src/calibre/library/custom_columns.py +++ b/src/calibre/library/custom_columns.py @@ -484,7 +484,9 @@ class CustomColumns(object): if not existing: existing = [] for x in set(set_val) - set(existing): - if x is None: + # normalized types are text and ratings, so we can do this check + # to see if we need to re-add the value + if not x: continue case_change = False existing = list(self.all_custom(num=data['num']))