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
@ -123,9 +123,8 @@ class ManyToOneTable(Table):
|
|||||||
|
|
||||||
def read_id_maps(self, db):
|
def read_id_maps(self, db):
|
||||||
for row in db.conn.execute('SELECT id, {0} FROM {1}'.format(
|
for row in db.conn.execute('SELECT id, {0} FROM {1}'.format(
|
||||||
self.metadata['column'], self.metadata['table'])):
|
self.metadata['column'], self.metadata['table'])):
|
||||||
if row[1]:
|
self.id_map[row[0]] = self.unserialize(row[1])
|
||||||
self.id_map[row[0]] = self.unserialize(row[1])
|
|
||||||
|
|
||||||
def read_maps(self, db):
|
def read_maps(self, db):
|
||||||
for row in db.conn.execute(
|
for row in db.conn.execute(
|
||||||
@ -218,3 +217,4 @@ class LanguagesTable(ManyToManyTable):
|
|||||||
ManyToManyTable.read_id_maps(self, db)
|
ManyToManyTable.read_id_maps(self, db)
|
||||||
lm = lang_map()
|
lm = lang_map()
|
||||||
self.lang_name_map = {x:lm.get(x, x) for x in self.id_map.itervalues()}
|
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'))
|
self.assertEqual(tuple(map(f.for_book, (1,2,3))), ('Two', 'Two', 'three'))
|
||||||
del cache2
|
del cache2
|
||||||
|
|
||||||
# TODO: Test different column types rating, #rating, series, #series,
|
# TODO: Test different column types series, #series,
|
||||||
|
|
||||||
# Enum
|
# Enum
|
||||||
self.assertFalse(cache.set_field('#enum', {1:'Not allowed'}))
|
self.assertFalse(cache.set_field('#enum', {1:'Not allowed'}))
|
||||||
@ -171,6 +171,18 @@ class WritingTest(BaseTest):
|
|||||||
self.assertEqual(c.field_for('#enum', i), val)
|
self.assertEqual(c.field_for('#enum', i), val)
|
||||||
del cache2
|
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():
|
def tests():
|
||||||
return unittest.TestLoader().loadTestsFromTestCase(WritingTest)
|
return unittest.TestLoader().loadTestsFromTestCase(WritingTest)
|
||||||
|
|
||||||
|
@ -92,7 +92,7 @@ def get_adapter(name, metadata):
|
|||||||
elif dt == 'comments':
|
elif dt == 'comments':
|
||||||
ans = single_text
|
ans = single_text
|
||||||
elif dt == 'rating':
|
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':
|
elif dt == 'enumeration':
|
||||||
ans = single_text
|
ans = single_text
|
||||||
elif dt == 'composite':
|
elif dt == 'composite':
|
||||||
|
Loading…
x
Reference in New Issue
Block a user