[FIX] base: do not drop sql constraints during update
authorMartin Trigaux <mat@openerp.com>
Mon, 15 Sep 2014 14:59:38 +0000 (16:59 +0200)
committerMartin Trigaux <mat@openerp.com>
Tue, 16 Sep 2014 12:10:29 +0000 (14:10 +0200)
commitf7c45c5e31623b881ff15f36ce74d41509b9fe69
tree8bcae87aadf15952730b37c31655df4f14d4901c
parenta1ab124469a3ebd4f09d99299fcb95c720cc9a1c
[FIX] base: do not drop sql constraints during update

When a module is updated, the sql constraints were checked against postgres pg_get_constraintdef() to see if they have diverged from the one defined in python code.
However this check was failing as the syntax returned by pg_get_constraintdef() (e.g. "CHECK ((credit * debit) = 0::numeric)") differs from the one returned by `unify_cons_text` method (e.g. "check(debit*credit = 0")) so the constraints were always dropped and recomputed.
This adds a definition column on ir.model.constraint (storing original defintion) to detect changes.
The pg_constraint is still inspected to make sure we detect constraint without ir_model_constraint but with postgres constraint defined (e.g. name_uniq defined in base.sql).

This changes also the date_update field when the definition changes.
openerp/addons/base/base.sql
openerp/addons/base/ir/ir_model.py
openerp/models.py