diff --git a/src/calibre/db/cache.py b/src/calibre/db/cache.py index b739beb989..19e0d8524d 100644 --- a/src/calibre/db/cache.py +++ b/src/calibre/db/cache.py @@ -1036,13 +1036,15 @@ class Cache(object): if is_series: bimap, simap = {}, {} + sfield = self.fields[name + '_index'] for k, v in book_id_to_val_map.iteritems(): if isinstance(v, basestring): v, sid = get_series_values(v) else: v = sid = None - if name.startswith('#') and sid is None: - sid = 1.0 # The value will be set to 1.0 in the db table + if sid is None and name.startswith('#'): + extra = self._fast_field_for(sfield, k) + sid = extra or 1.0 # The value to be set the db link table bimap[k] = v if sid is not None: simap[k] = sid diff --git a/src/calibre/db/tests/writing.py b/src/calibre/db/tests/writing.py index 1ce6817f1d..eb875fb788 100644 --- a/src/calibre/db/tests/writing.py +++ b/src/calibre/db/tests/writing.py @@ -192,11 +192,12 @@ class WritingTest(BaseTest): for c in (cache, cache2): for i, val in {1:'A Series One', 2:'A Series One', 3:'Series'}.iteritems(): self.assertEqual(c.field_for('series', i), val) + cs_indices = {1:c.field_for('#series_index', 1), 3:c.field_for('#series_index', 3)} for i in (1, 2, 3): self.assertEqual(c.field_for('#series', i), 'Series') for i, val in {1:2, 2:1, 3:3}.iteritems(): self.assertEqual(c.field_for('series_index', i), val) - for i, val in {1:1, 2:0, 3:1}.iteritems(): + for i, val in {1:cs_indices[1], 2:0, 3:cs_indices[3]}.iteritems(): self.assertEqual(c.field_for('#series_index', i), val) del cache2 diff --git a/src/calibre/gui2/preferences/columns.py b/src/calibre/gui2/preferences/columns.py index 59a429bb94..804a1f0665 100644 --- a/src/calibre/gui2/preferences/columns.py +++ b/src/calibre/gui2/preferences/columns.py @@ -118,8 +118,10 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form): else: fm = field_metadata[col] - if col in ['title', 'ondevice']: + if col == 'title': coltype = _('Text') + elif col == 'ondevice': + coltype = _('Yes/No with text') else: dt = fm['datatype'] if fm['is_multiple']: