odoo/bin/osv
P. Christeas 814c4af299 [FIX] osv: _constraints can be inherited by redefining a constraint with the same name
Indeed, when we define an expression like

class bar(osv.osv):
  _inherit = 'bar.bar'

  def _check_foo(self, cr, uid, ids, context):
      return True

  _constraints = [ (_check_foo, "Foo failed!", ['foo']) ]

... it means that _check_foo will be passed as an *object* to the model's
structure of _constraints. Therefore, it would be unequal and just append
the list of any existing constraints. So, an older (_check_foo, , ['foo'])
would always remain active using the previous code. This has to do with
the _check_foo being an unbound (ie. not inheritable) function.

Now, we check the /string name/ of the function, too. We say that if the
inherited class's constraint function has the same name "_check_foo", the
old ones shall be replaced.

Note: this MAY introduce unpredictable results, if several modules try
to override the same inherited constraint. There is no guaranteed order
of inheritance. Please avoid using this feature unless necessary.

lp bug: https://launchpad.net/bugs/700451 fixed

bzr revid: odo@openerp.com-20110117094750-4lyzx165f1z1zgl4
2011-01-17 10:47:50 +01:00
..
__init__.py Changed encoding to coding ref: PEP: 0263 2009-10-20 16:22:23 +05:30
expression.py [MERGE] orm,expression: fixed m2o handling of empty lists in domains + tests 2010-12-29 18:42:23 +01:00
fields.py [FIX] fields.property: restore compatibility with non-m2o properties 2011-01-15 00:05:24 +01:00
orm.py [IMP] logging for set null failed 2011-01-15 18:04:10 +01:00
osv.py [FIX] osv: _constraints can be inherited by redefining a constraint with the same name 2011-01-17 10:47:50 +01:00
query.py [IMP] osv.query,orm: removed trailing whitespace introduced by previous commits 2010-10-01 18:54:11 +02:00