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

However, it works fine when directly call the getter of the instance.  Ie:
    an_instance.get_calculable_dh_chain_end(None)  # the function doesn't 
use name
This returns as expected (in the case of the test, log3).

All advice and suggestions are welcome.  Thank you in advance for your 
attention!

-- 
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/ad9955aa-d053-4d8c-9bde-716ae9c7e564%40googlegroups.com.

Reply via email to