From 91626094db204c6cbad1a41a0e06dce59a64dc38 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Fri, 3 Jun 2011 17:38:47 +0100 Subject: [PATCH 1/4] Make the formatter and other users of mi.format_field respect the use_roman series number config item. --- src/calibre/ebooks/metadata/book/base.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/calibre/ebooks/metadata/book/base.py b/src/calibre/ebooks/metadata/book/base.py index 378d4ab5f0..690b54183f 100644 --- a/src/calibre/ebooks/metadata/book/base.py +++ b/src/calibre/ebooks/metadata/book/base.py @@ -18,6 +18,7 @@ from calibre.library.field_metadata import FieldMetadata from calibre.utils.date import isoformat, format_date from calibre.utils.icu import sort_key from calibre.utils.formatter import TemplateFormatter +from calibre.utils.config import config def human_readable(size, precision=2): """ Convert a size in bytes into megabytes """ @@ -557,12 +558,13 @@ class Metadata(object): def format_series_index(self, val=None): from calibre.ebooks.metadata import fmt_sidx + use_roman=config['use_roman_numerals_for_series_number'] v = self.series_index if val is None else val try: x = float(v) except (ValueError, TypeError): x = 1 - return fmt_sidx(x) + return fmt_sidx(x, use_roman=use_roman) def authors_from_string(self, raw): from calibre.ebooks.metadata import string_to_authors From 62cd0e33f9475ea3756ce95b941991fccbbd7259 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Fri, 3 Jun 2011 17:44:21 +0100 Subject: [PATCH 2/4] Back out the fix. It was broken --- src/calibre/ebooks/metadata/book/base.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/calibre/ebooks/metadata/book/base.py b/src/calibre/ebooks/metadata/book/base.py index 690b54183f..378d4ab5f0 100644 --- a/src/calibre/ebooks/metadata/book/base.py +++ b/src/calibre/ebooks/metadata/book/base.py @@ -18,7 +18,6 @@ from calibre.library.field_metadata import FieldMetadata from calibre.utils.date import isoformat, format_date from calibre.utils.icu import sort_key from calibre.utils.formatter import TemplateFormatter -from calibre.utils.config import config def human_readable(size, precision=2): """ Convert a size in bytes into megabytes """ @@ -558,13 +557,12 @@ class Metadata(object): def format_series_index(self, val=None): from calibre.ebooks.metadata import fmt_sidx - use_roman=config['use_roman_numerals_for_series_number'] v = self.series_index if val is None else val try: x = float(v) except (ValueError, TypeError): x = 1 - return fmt_sidx(x, use_roman=use_roman) + return fmt_sidx(x) def authors_from_string(self, raw): from calibre.ebooks.metadata import string_to_authors From d407876d74fecc2c4e9fd7b9bb6ac79e25dcd119 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Fri, 3 Jun 2011 21:37:29 +0100 Subject: [PATCH 3/4] Add composite columns to conditionable_columns --- src/calibre/library/coloring.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/calibre/library/coloring.py b/src/calibre/library/coloring.py index c8cafcf9eb..8cfa085919 100644 --- a/src/calibre/library/coloring.py +++ b/src/calibre/library/coloring.py @@ -85,7 +85,7 @@ class Rule(object): # {{{ if dt == 'datetime': return self.date_condition(col, action, val) - if dt in ('comments', 'series', 'text', 'enumeration'): + if dt in ('comments', 'series', 'text', 'enumeration', 'composite'): ism = m.get('is_multiple', False) if ism: return self.multiple_condition(col, action, val, ism) @@ -181,9 +181,7 @@ def rule_from_template(fm, template): def conditionable_columns(fm): for key in fm: m = fm[key] - dt = m['datatype'] - if m.get('name', False) and dt in ('bool', 'int', 'float', 'rating', 'series', - 'comments', 'text', 'enumeration', 'datetime'): + if m.get('name', False) and m['kind'] == 'field': if key == 'sort': yield 'title_sort' else: From b4593fb818d94ac559ea085478a6c8ddaedc309f Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Fri, 3 Jun 2011 21:55:02 +0100 Subject: [PATCH 4/4] Fix is_multiple problem in templates for custom columns. --- src/calibre/library/coloring.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calibre/library/coloring.py b/src/calibre/library/coloring.py index 8cfa085919..31798d7000 100644 --- a/src/calibre/library/coloring.py +++ b/src/calibre/library/coloring.py @@ -88,7 +88,7 @@ class Rule(object): # {{{ if dt in ('comments', 'series', 'text', 'enumeration', 'composite'): ism = m.get('is_multiple', False) if ism: - return self.multiple_condition(col, action, val, ism) + return self.multiple_condition(col, action, val, ',' if ism == '|' else ism) return self.text_condition(col, action, val) def identifiers_condition(self, col, action, val):