mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Writing of ratings
This commit is contained in:
parent
376bcdddaa
commit
51bbe72ec2
@ -124,7 +124,6 @@ class ManyToOneTable(Table):
|
||||
def read_id_maps(self, db):
|
||||
for row in db.conn.execute('SELECT id, {0} FROM {1}'.format(
|
||||
self.metadata['column'], self.metadata['table'])):
|
||||
if row[1]:
|
||||
self.id_map[row[0]] = self.unserialize(row[1])
|
||||
|
||||
def read_maps(self, db):
|
||||
@ -218,3 +217,4 @@ class LanguagesTable(ManyToManyTable):
|
||||
ManyToManyTable.read_id_maps(self, db)
|
||||
lm = lang_map()
|
||||
self.lang_name_map = {x:lm.get(x, x) for x in self.id_map.itervalues()}
|
||||
|
||||
|
@ -159,7 +159,7 @@ class WritingTest(BaseTest):
|
||||
self.assertEqual(tuple(map(f.for_book, (1,2,3))), ('Two', 'Two', 'three'))
|
||||
del cache2
|
||||
|
||||
# TODO: Test different column types rating, #rating, series, #series,
|
||||
# TODO: Test different column types series, #series,
|
||||
|
||||
# Enum
|
||||
self.assertFalse(cache.set_field('#enum', {1:'Not allowed'}))
|
||||
@ -171,6 +171,18 @@ class WritingTest(BaseTest):
|
||||
self.assertEqual(c.field_for('#enum', i), val)
|
||||
del cache2
|
||||
|
||||
# Rating
|
||||
self.assertFalse(cache.set_field('rating', {1:6, 2:4}))
|
||||
self.assertEqual(cache.set_field('rating', {1:0, 3:2}), {1, 3})
|
||||
self.assertEqual(cache.set_field('#rating', {1:None, 2:4, 3:8}), {1, 2, 3})
|
||||
cache2 = self.init_cache(cl)
|
||||
for c in (cache, cache2):
|
||||
for i, val in {1:None, 2:4, 3:2}.iteritems():
|
||||
self.assertEqual(c.field_for('rating', i), val)
|
||||
for i, val in {1:None, 2:4, 3:8}.iteritems():
|
||||
self.assertEqual(c.field_for('#rating', i), val)
|
||||
del cache2
|
||||
|
||||
def tests():
|
||||
return unittest.TestLoader().loadTestsFromTestCase(WritingTest)
|
||||
|
||||
|
@ -92,7 +92,7 @@ def get_adapter(name, metadata):
|
||||
elif dt == 'comments':
|
||||
ans = single_text
|
||||
elif dt == 'rating':
|
||||
ans = lambda x: x if x is None else min(10., max(0., adapt_number(float, x))),
|
||||
ans = lambda x: None if x in {None, 0} else min(10., max(0., adapt_number(float, x)))
|
||||
elif dt == 'enumeration':
|
||||
ans = single_text
|
||||
elif dt == 'composite':
|
||||
|
Loading…
x
Reference in New Issue
Block a user