From 77065685caecf1dc00be2526b364d0639eae5aba Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Thu, 9 Feb 2012 17:15:42 +0100 Subject: [PATCH] [FIX] don't blow up filters management if a filter uses an invalid syntax (or an unknown variable) and can't be evaluated bzr revid: xmo@openerp.com-20120209161542-whs5ye637lijas26 --- addons/web/controllers/main.py | 15 +++++++++++++-- addons/web/static/src/xml/base.xml | 5 ++++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index 7ad2fcea43d..151d572c987 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -5,6 +5,7 @@ import base64 import csv import glob import itertools +import logging import operator import datetime import os @@ -1177,11 +1178,21 @@ class SearchView(View): @openerpweb.jsonrequest def get_filters(self, req, model): + logger = logging.getLogger(__name__ + '.SearchView.get_filters') Model = req.session.model("ir.filters") filters = Model.get_filters(model) for filter in filters: - filter["context"] = req.session.eval_context(parse_context(filter["context"], req.session)) - filter["domain"] = req.session.eval_domain(parse_domain(filter["domain"], req.session)) + try: + filter["context"] = req.session.eval_context( + parse_context(filter["context"], req.session)) + filter["domain"] = req.session.eval_domain( + parse_domain(filter["domain"], req.session)) + except Exception: + logger.exception("Failed to parse custom filter %s in %s", + filter['name'], model) + filter['disabled'] = True + del filter['context'] + del filter['domain'] return filters @openerpweb.jsonrequest diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 953593d9b39..8726e60323b 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -1279,7 +1279,10 @@ - +