diff options
| author | Xavier Morel <xmo@openerp.com> | 2012-02-09 17:15:42 +0100 |
|---|---|---|
| committer | Xavier Morel <xmo@openerp.com> | 2012-02-09 17:15:42 +0100 |
| commit | 77065685caecf1dc00be2526b364d0639eae5aba (patch) | |
| tree | d9e896e144948e7b398d8fd96e3f262971cfc71b /addons/web/controllers | |
| parent | 2d08b98ea4735dfaa54eac2ffd6c6b780bb02e66 (diff) | |
[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
Diffstat (limited to 'addons/web/controllers')
| -rw-r--r-- | addons/web/controllers/main.py | 15 |
1 files changed, 13 insertions, 2 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 |
