Writing of ratings

This commit is contained in:
Kovid Goyal 2013-03-01 14:13:40 +05:30
parent 376bcdddaa
commit 51bbe72ec2
3 changed files with 17 additions and 5 deletions

View File

@ -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()}

View File

@ -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)

View File

@ -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':