On 2016-04-01 18:14, Jon Levy wrote:
> I am working to migrate my 3.0 installation to 3.4, but I've run into 
> problems with
> function fields.  I can't find any relevant changes in the documentation or
> notes in the wiki.
> 
> Two fields, so far, crash in tests that passed in 3.0.
> 
> (1)  
> Behavior:
>     Given an instance of MyClass, attempts to access
>     the_instance.current result in: "RuntimeError: maximum recursion depth 
> exceeded"
> 
> Code (simplified):
>     class MyClass(ModelSQL, ModelView):
>       association = fields.Many2One('my_module.association', 'Association',
>  required=True, select=True, ondelete='CASCADE”
>       )
>       current = fields.Function(fields.Boolean('Current'), 'get_current')
> 
>       def get_current(self, name):
>  "Get current"
>  return self.association.is_current
> 
>  # same error also results when replacing the code with
>  #    self.association
>  #    return True
>           # Ie, the error is simply from accessing the Many2One field
>           # of the instance.
> 
> (2)
> Tests that attempt to access this function field report the following
> traceback:
>     Traceback (most recent call last):
>       File ..., line 2432, in test0130
> self.assertEqual(log1.calculable_dh_chain_end, log3)
>       File 
> "/usr/local/lib/python2.7/dist-packages/trytond/model/fields/field.py",
>               line 213, in __get__
>  return inst.__getattr__(self.name)
>       File 
> "/usr/local/lib/python2.7/dist-packages/trytond/model/modelstorage.py",
>               line 1332, in __getattr__
>  fvalue = instantiate(field, data[fname], data)
>       File 
> "/usr/local/lib/python2.7/dist-packages/trytond/model/modelstorage.py",
>               line 1303, in instantiate
>  return Model(value, _ids=ids, _local_cache=local_cache)
>       File 
> "/usr/local/lib/python2.7/dist-packages/trytond/model/modelstorage.py",
>               line 1157, in __init__
>  assert id in _ids
>     AssertionError

I guess it is because the value in the database of the column
'association' is not an id but something that int() can convert (maybe a
float).
Maybe we should change the test that convert to int() by an isinstance
test.

-- 
Cédric Krier - B2CK SPRL
Email/Jabber: cedric.kr...@b2ck.com
Tel: +32 472 54 46 59
Website: http://www.b2ck.com/

-- 
You received this message because you are subscribed to the Google Groups 
"tryton" group.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tryton/20160402085304.GI13082%40tetsuo.

Reply via email to