From 450e8964ba5388a9456b6091fb908998f7130785 Mon Sep 17 00:00:00 2001 From: ced <> Date: Thu, 22 Feb 2007 07:35:38 +0000 Subject: [PATCH] BASE: prevent recursion in company bzr revid: ced-f1755f17b6856c1f422b8b96e60234fa437cf926 --- bin/addons/base/res/res_company.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/bin/addons/base/res/res_company.py b/bin/addons/base/res/res_company.py index c74458490d0..08f772a73ac 100644 --- a/bin/addons/base/res/res_company.py +++ b/bin/addons/base/res/res_company.py @@ -97,9 +97,23 @@ class res_company(osv.osv): except: return 1 + def _check_recursion(self, cr, uid, ids): + level = 100 + while len(ids): + cr.execute('select distinct parent_id from res_company where id in ('+','.join(map(str,ids))+')') + ids = filter(None, map(lambda x:x[0], cr.fetchall())) + if not level: + return False + level -= 1 + return True + _defaults = { 'currency_id': _get_euro, } + _constraints = [ + (_check_recursion, 'Error! You can not create recursive companies.', ['parent_id']) + ] + res_company()