summaryrefslogtreecommitdiff
path: root/addons/web/controllers/main.py
diff options
context:
space:
mode:
authorXavier Morel <xmo@openerp.com>2012-02-09 17:15:42 +0100
committerXavier Morel <xmo@openerp.com>2012-02-09 17:15:42 +0100
commit77065685caecf1dc00be2526b364d0639eae5aba (patch)
treed9e896e144948e7b398d8fd96e3f262971cfc71b /addons/web/controllers/main.py
parent2d08b98ea4735dfaa54eac2ffd6c6b780bb02e66 (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/main.py')
-rw-r--r--addons/web/controllers/main.py15
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