From e09cc7780be31cbdaa1523b5cc18201562dd405c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sun, 13 Dec 2015 14:53:22 +0100 Subject: [PATCH] Recursively get the type of views View can inherit inheriting view if the model is different, so the validation must retrieve recursively the RNG type. issue5153 review15841002 --- trytond/ir/ui/view.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/trytond/ir/ui/view.py b/trytond/ir/ui/view.py index 050490bd22..28928b940a 100644 --- a/trytond/ir/ui/view.py +++ b/trytond/ir/ui/view.py @@ -128,6 +128,12 @@ class View(ModelSQL, ModelView): cls._get_rng_cache.set(key, rng) return rng + @property + def rng_type(self): + if self.inherit: + return self.inherit.rng_type + return self.type + @classmethod def validate(cls, views): super(View, cls).validate(views) @@ -145,8 +151,7 @@ class View(ModelSQL, ModelView): tree = etree.fromstring(xml) if hasattr(etree, 'RelaxNG'): - rng_type = view.inherit.type if view.inherit else view.type - validator = etree.RelaxNG(etree=cls.get_rng(rng_type)) + validator = etree.RelaxNG(etree=cls.get_rng(view.rng_type)) if not validator.validate(tree): error_log = reduce(lambda x, y: str(x) + '\n' + str(y), validator.error_log.filter_from_errors())