Fix refresh_ids() and rendering of size and datetime fields

This commit is contained in:
Kovid Goyal 2013-07-20 10:55:14 +05:30
parent f6d8c8f1cd
commit 9f83d3b59d
2 changed files with 6 additions and 6 deletions

View File

@ -321,7 +321,7 @@ class View(object):
if self.search_restriction or self.base_restriction: if self.search_restriction or self.base_restriction:
self.search('', return_matches=False) self.search('', return_matches=False)
def refresh_ids(self, db, ids): def refresh_ids(self, ids):
self.cache.clear_caches(book_ids=ids) self.cache.clear_caches(book_ids=ids)
try: try:
return list(map(self.id_to_index, ids)) return list(map(self.id_to_index, ids))

View File

@ -17,7 +17,7 @@ from calibre.ebooks.metadata import fmt_sidx, authors_to_string, string_to_autho
from calibre.ebooks.metadata.book.formatter import SafeFormat from calibre.ebooks.metadata.book.formatter import SafeFormat
from calibre.ptempfile import PersistentTemporaryFile from calibre.ptempfile import PersistentTemporaryFile
from calibre.utils.config import tweaks, device_prefs, prefs from calibre.utils.config import tweaks, device_prefs, prefs
from calibre.utils.date import dt_factory, qt_to_dt, as_local_time from calibre.utils.date import dt_factory, qt_to_dt, as_local_time, UNDEFINED_DATE
from calibre.utils.icu import sort_key from calibre.utils.icu import sort_key
from calibre.utils.search_query_parser import SearchQueryParser from calibre.utils.search_query_parser import SearchQueryParser
from calibre.db.search import _match, CONTAINS_MATCH, EQUALS_MATCH, REGEXP_MATCH from calibre.db.search import _match, CONTAINS_MATCH, EQUALS_MATCH, REGEXP_MATCH
@ -661,10 +661,10 @@ class BooksModel(QAbstractTableModel): # {{{
sz_mult = 1.0/(1024**2) sz_mult = 1.0/(1024**2)
def func(idx): def func(idx):
val = fffunc(field_obj, idfunc(idx), default_value=0) or 0 val = fffunc(field_obj, idfunc(idx), default_value=0) or 0
if val is 0:
return NONE
ans = u'%.1f' % (val * sz_mult) ans = u'%.1f' % (val * sz_mult)
if val > 0 and ans == u'0.0': return QVariant(u'<0.1' if ans == u'0.0' else ans)
ans = u'<0.1'
return QVariant(ans)
elif field == 'languages': elif field == 'languages':
def func(idx): def func(idx):
return QVariant(', '.join(calibre_langcode_to_name(x) for x in fffunc(field_obj, idfunc(idx)))) return QVariant(', '.join(calibre_langcode_to_name(x) for x in fffunc(field_obj, idfunc(idx))))
@ -693,7 +693,7 @@ class BooksModel(QAbstractTableModel): # {{{
return QVariant(fffunc(field_obj, idfunc(idx), default_value='')) return QVariant(fffunc(field_obj, idfunc(idx), default_value=''))
elif dt == 'datetime': elif dt == 'datetime':
def func(idx): def func(idx):
return QVariant(fffunc(field_obj, idfunc(idx), default_value=UNDEFINED_QDATETIME)) return QVariant(QDateTime(as_local_time(fffunc(field_obj, idfunc(idx), default_value=UNDEFINED_DATE))))
elif dt == 'rating': elif dt == 'rating':
def func(idx): def func(idx):
return QVariant(int(fffunc(field_obj, idfunc(idx), default_value=0)/2.0)) return QVariant(int(fffunc(field_obj, idfunc(idx), default_value=0)/2.0))