Small cleanup of composite field code.

This commit is contained in:
Charles Haley 2010-09-18 11:38:51 +01:00
parent 7881286274
commit 83fc5b2cc0
2 changed files with 9 additions and 5 deletions

View File

@ -46,7 +46,10 @@ composite_formatter = SafeFormat()
compress_spaces = re.compile(r'\s+') compress_spaces = re.compile(r'\s+')
def format_composite(x, mi): def format_composite(x, mi):
ans = composite_formatter.vformat(x, [], mi).strip() try:
ans = composite_formatter.vformat(x, [], mi).strip()
except:
ans = x
return compress_spaces.sub(' ', ans) return compress_spaces.sub(' ', ans)
class Metadata(object): class Metadata(object):
@ -86,7 +89,10 @@ class Metadata(object):
except AttributeError: except AttributeError:
pass pass
if field in _data['user_metadata'].iterkeys(): if field in _data['user_metadata'].iterkeys():
return _data['user_metadata'][field]['#value#'] d = _data['user_metadata'][field]
if d['datatype'] != 'composite':
return d['#value#']
return format_composite(d['display']['composite_template'], self)
raise AttributeError( raise AttributeError(
'Metadata object has no attribute named: '+ repr(field)) 'Metadata object has no attribute named: '+ repr(field))
@ -386,8 +392,6 @@ class Metadata(object):
res = format_date(res, cmeta['display'].get('date_format','dd MMM yyyy')) res = format_date(res, cmeta['display'].get('date_format','dd MMM yyyy'))
elif datatype == 'bool': elif datatype == 'bool':
res = _('Yes') if res else _('No') res = _('Yes') if res else _('No')
elif datatype == 'composite':
res = format_composite(cmeta['display']['composite_template'], self)
return (name, res, orig_res, cmeta) return (name, res, orig_res, cmeta)
if key in field_metadata and field_metadata[key]['kind'] == 'field': if key in field_metadata and field_metadata[key]['kind'] == 'field':

View File

@ -605,7 +605,7 @@ class BooksModel(QAbstractTableModel): # {{{
def composite_type(r, key=None): def composite_type(r, key=None):
mi = self.get_cached_metadata(r) mi = self.get_cached_metadata(r)
return QVariant(mi.format_field(key)[1]) return QVariant(mi.get(key, ''))
self.dc = { self.dc = {
'title' : functools.partial(text_type, 'title' : functools.partial(text_type,