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:
self.search('', return_matches=False)
def refresh_ids(self, db, ids):
def refresh_ids(self, ids):
self.cache.clear_caches(book_ids=ids)
try:
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.ptempfile import PersistentTemporaryFile
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.search_query_parser import SearchQueryParser
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)
def func(idx):
val = fffunc(field_obj, idfunc(idx), default_value=0) or 0
if val is 0:
return NONE
ans = u'%.1f' % (val * sz_mult)
if val > 0 and ans == u'0.0':
ans = u'<0.1'
return QVariant(ans)
return QVariant(u'<0.1' if ans == u'0.0' else ans)
elif field == 'languages':
def func(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=''))
elif dt == 'datetime':
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':
def func(idx):
return QVariant(int(fffunc(field_obj, idfunc(idx), default_value=0)/2.0))