[FIX] non-linking o2m tests, corresponding code
bzr revid: xmo@openerp.com-20120920105612-03ifizt2iv08tdhz
This commit is contained in:
parent
c9e0cfd64a
commit
8e841cd8f7
|
@ -206,16 +206,26 @@ class ir_fields_converter(orm.Model):
|
||||||
return [(6, 0, ids)]
|
return [(6, 0, ids)]
|
||||||
def _str_to_one2many(self, cr, uid, model, column, value, context=None):
|
def _str_to_one2many(self, cr, uid, model, column, value, context=None):
|
||||||
commands = []
|
commands = []
|
||||||
for subfield, record in zip((self._referencing_subfield(
|
|
||||||
only_ref_fields(record))
|
for record in value:
|
||||||
for record in value),
|
id = None
|
||||||
value):
|
refs = only_ref_fields(record)
|
||||||
id, subfield_type = self.db_id_for(
|
# there are ref fields in the record
|
||||||
cr, uid, model, column, subfield, record[subfield], context=context)
|
if refs:
|
||||||
|
subfield = self._referencing_subfield(refs)
|
||||||
|
reference = record[subfield]
|
||||||
|
id, subfield_type = self.db_id_for(
|
||||||
|
cr, uid, model, column, subfield, reference, context=context)
|
||||||
|
if id is None:
|
||||||
|
raise ValueError(
|
||||||
|
_(u"No matching record found for %(field_type)s '%(value)s' in field '%%(field)s'")
|
||||||
|
% {'field_type': subfield_type, 'value': reference})
|
||||||
|
|
||||||
writable = exclude_ref_fields(record)
|
writable = exclude_ref_fields(record)
|
||||||
if id:
|
if id:
|
||||||
commands.append(LINK_TO(id))
|
commands.append(LINK_TO(id))
|
||||||
commands.append(UPDATE(id, writable))
|
commands.append(UPDATE(id, writable))
|
||||||
else:
|
else:
|
||||||
commands.append(CREATE(writable))
|
commands.append(CREATE(writable))
|
||||||
|
|
||||||
return commands
|
return commands
|
||||||
|
|
|
@ -67,6 +67,12 @@ class One2ManyChild(orm.Model):
|
||||||
def name_get(self, cr, uid, ids, context=None):
|
def name_get(self, cr, uid, ids, context=None):
|
||||||
return [(record.id, "%s:%s" % (self._name, record.value))
|
return [(record.id, "%s:%s" % (self._name, record.value))
|
||||||
for record in self.browse(cr, uid, ids, context=context)]
|
for record in self.browse(cr, uid, ids, context=context)]
|
||||||
|
def name_search(self, cr, user, name='', args=None, operator='ilike', context=None, limit=100):
|
||||||
|
return (self.name_get(cr, user,
|
||||||
|
self.search(cr, user, [['value', operator, int(name.split(':')[1])]])
|
||||||
|
, context=context)
|
||||||
|
if isinstance(name, basestring) and name.split(':')[0] == self._name
|
||||||
|
else [])
|
||||||
|
|
||||||
class One2ManyMultiple(orm.Model):
|
class One2ManyMultiple(orm.Model):
|
||||||
_name = 'export.one2many.multiple'
|
_name = 'export.one2many.multiple'
|
||||||
|
|
|
@ -786,20 +786,21 @@ class test_o2m(ImporterCase):
|
||||||
model_name = 'export.one2many'
|
model_name = 'export.one2many'
|
||||||
|
|
||||||
def test_name_get(self):
|
def test_name_get(self):
|
||||||
# FIXME: bloody hell why can't this just name_create the record?
|
s = u'Java is a DSL for taking large XML files and converting them ' \
|
||||||
self.assertRaises(
|
u'to stack traces'
|
||||||
IndexError,
|
ids, messages = self.import_(
|
||||||
self.import_,
|
|
||||||
['const', 'value'],
|
['const', 'value'],
|
||||||
[['5', u'Java is a DSL for taking large XML files'
|
[['5', s]])
|
||||||
u' and converting them to stack traces']])
|
self.assertEqual(messages, [message(
|
||||||
|
u"No matching record found for name '%s' in field 'value'" % s)])
|
||||||
|
self.assertIs(ids, False)
|
||||||
|
|
||||||
def test_single(self):
|
def test_single(self):
|
||||||
ids, messages = self.import_(['const', 'value/value'], [
|
ids, messages = self.import_(['const', 'value/value'], [
|
||||||
['5', '63']
|
['5', '63']
|
||||||
])
|
])
|
||||||
self.assertEqual(len(ids), 1)
|
|
||||||
self.assertFalse(messages)
|
self.assertFalse(messages)
|
||||||
|
self.assertEqual(len(ids), 1)
|
||||||
|
|
||||||
(b,) = self.browse()
|
(b,) = self.browse()
|
||||||
self.assertEqual(b.const, 5)
|
self.assertEqual(b.const, 5)
|
||||||
|
@ -810,8 +811,8 @@ class test_o2m(ImporterCase):
|
||||||
['5', '63'],
|
['5', '63'],
|
||||||
['6', '64'],
|
['6', '64'],
|
||||||
])
|
])
|
||||||
self.assertEqual(len(ids), 2)
|
|
||||||
self.assertFalse(messages)
|
self.assertFalse(messages)
|
||||||
|
self.assertEqual(len(ids), 2)
|
||||||
|
|
||||||
b1, b2 = self.browse()
|
b1, b2 = self.browse()
|
||||||
self.assertEqual(b1.const, 5)
|
self.assertEqual(b1.const, 5)
|
||||||
|
@ -826,8 +827,8 @@ class test_o2m(ImporterCase):
|
||||||
['', '65'],
|
['', '65'],
|
||||||
['', '66'],
|
['', '66'],
|
||||||
])
|
])
|
||||||
self.assertEqual(len(ids), 4)
|
|
||||||
self.assertFalse(messages)
|
self.assertFalse(messages)
|
||||||
|
self.assertEqual(len(ids), 1)
|
||||||
|
|
||||||
(b,) = self.browse()
|
(b,) = self.browse()
|
||||||
self.assertEqual(values(b.value), [63, 64, 65, 66])
|
self.assertEqual(values(b.value), [63, 64, 65, 66])
|
||||||
|
@ -839,8 +840,8 @@ class test_o2m(ImporterCase):
|
||||||
['the', '', '65'],
|
['the', '', '65'],
|
||||||
['rhythm', '', '66'],
|
['rhythm', '', '66'],
|
||||||
])
|
])
|
||||||
self.assertEqual(len(ids), 4)
|
|
||||||
self.assertFalse(messages)
|
self.assertFalse(messages)
|
||||||
|
self.assertEqual(len(ids), 1)
|
||||||
|
|
||||||
(b,) = self.browse()
|
(b,) = self.browse()
|
||||||
self.assertEqual(values(b.value), [63, 64, 65, 66])
|
self.assertEqual(values(b.value), [63, 64, 65, 66])
|
||||||
|
@ -923,18 +924,12 @@ class test_o2m_multiple(ImporterCase):
|
||||||
['', '13', '23'],
|
['', '13', '23'],
|
||||||
['', '14', ''],
|
['', '14', ''],
|
||||||
])
|
])
|
||||||
self.assertEqual(len(ids), 4)
|
|
||||||
self.assertFalse(messages)
|
self.assertFalse(messages)
|
||||||
|
self.assertEqual(len(ids), 1)
|
||||||
# Oh yeah, that's the stuff
|
# Oh yeah, that's the stuff
|
||||||
(b, b1, b2) = self.browse()
|
[b] = self.browse()
|
||||||
self.assertEqual(values(b.child1), [11])
|
self.assertEqual(values(b.child1), [11, 12, 13, 14])
|
||||||
self.assertEqual(values(b.child2), [21])
|
self.assertEqual(values(b.child2), [21, 22, 23])
|
||||||
|
|
||||||
self.assertEqual(values(b1.child1), [12])
|
|
||||||
self.assertEqual(values(b1.child2), [22])
|
|
||||||
|
|
||||||
self.assertEqual(values(b2.child1), [13, 14])
|
|
||||||
self.assertEqual(values(b2.child2), [23])
|
|
||||||
|
|
||||||
def test_multi(self):
|
def test_multi(self):
|
||||||
ids, messages = self.import_(['const', 'child1/value', 'child2/value'], [
|
ids, messages = self.import_(['const', 'child1/value', 'child2/value'], [
|
||||||
|
@ -945,13 +940,12 @@ class test_o2m_multiple(ImporterCase):
|
||||||
['', '', '22'],
|
['', '', '22'],
|
||||||
['', '', '23'],
|
['', '', '23'],
|
||||||
])
|
])
|
||||||
self.assertEqual(len(ids), 6)
|
|
||||||
self.assertFalse(messages)
|
self.assertFalse(messages)
|
||||||
# What the actual fuck?
|
self.assertEqual(len(ids), 1)
|
||||||
(b, b1) = self.browse()
|
|
||||||
|
[b] = self.browse()
|
||||||
self.assertEqual(values(b.child1), [11, 12, 13, 14])
|
self.assertEqual(values(b.child1), [11, 12, 13, 14])
|
||||||
self.assertEqual(values(b.child2), [21])
|
self.assertEqual(values(b.child2), [21, 22, 23])
|
||||||
self.assertEqual(values(b1.child2), [22, 23])
|
|
||||||
|
|
||||||
def test_multi_fullsplit(self):
|
def test_multi_fullsplit(self):
|
||||||
ids, messages = self.import_(['const', 'child1/value', 'child2/value'], [
|
ids, messages = self.import_(['const', 'child1/value', 'child2/value'], [
|
||||||
|
@ -963,14 +957,13 @@ class test_o2m_multiple(ImporterCase):
|
||||||
['', '', '22'],
|
['', '', '22'],
|
||||||
['', '', '23'],
|
['', '', '23'],
|
||||||
])
|
])
|
||||||
self.assertEqual(len(ids), 7)
|
|
||||||
self.assertFalse(messages)
|
self.assertFalse(messages)
|
||||||
# oh wow
|
self.assertEqual(len(ids), 1)
|
||||||
(b, b1) = self.browse()
|
|
||||||
|
[b] = self.browse()
|
||||||
self.assertEqual(b.const, 5)
|
self.assertEqual(b.const, 5)
|
||||||
self.assertEqual(values(b.child1), [11, 12, 13, 14])
|
self.assertEqual(values(b.child1), [11, 12, 13, 14])
|
||||||
self.assertEqual(b1.const, 36)
|
self.assertEqual(values(b.child2), [21, 22, 23])
|
||||||
self.assertEqual(values(b1.child2), [21, 22, 23])
|
|
||||||
|
|
||||||
# function, related, reference: written to db as-is...
|
# function, related, reference: written to db as-is...
|
||||||
# => function uses @type for value coercion/conversion
|
# => function uses @type for value coercion/conversion
|
||||||
|
|
Loading…
Reference in New Issue