diff --git a/weboob/tools/application/base.py b/weboob/tools/application/base.py index d9368b93..97bbcf2a 100644 --- a/weboob/tools/application/base.py +++ b/weboob/tools/application/base.py @@ -33,6 +33,7 @@ from weboob.core.backendscfg import BackendsConfig from weboob.tools.config.iconfig import ConfigError from weboob.tools.log import createColoredFormatter, getLogger from weboob.tools.misc import to_unicode +from .results import ResultsConditionError __all__ = ['BaseApplication'] @@ -439,5 +440,8 @@ class BaseApplication(object): except CallErrors as e: app.bcall_errors_handler(e) sys.exit(1) + except ResultsConditionError as e: + print >>sys.stderr, '%s' % e + sys.exit(1) finally: app.deinit() diff --git a/weboob/tools/application/results.py b/weboob/tools/application/results.py index c33c7498..d99a0bce 100644 --- a/weboob/tools/application/results.py +++ b/weboob/tools/application/results.py @@ -18,16 +18,19 @@ # along with weboob. If not, see . import weboob.tools.date as date_utils +from weboob.capabilities import UserError from datetime import date + __all__ = ['ResultsCondition', 'ResultsConditionError'] + class IResultsCondition(object): def is_valid(self, obj): raise NotImplementedError() -class ResultsConditionError(Exception): +class ResultsConditionError(UserError): pass @@ -79,7 +82,10 @@ class ResultsCondition(IResultsCondition): break if operator is None: raise ResultsConditionError(u'Could not find a valid operator in sub-expression "%s"' % _and) - l, r = _and.split(operator) + try: + l, r = _and.split(operator) + except ValueError: + raise ResultsConditionError(u'Syntax error in the condition expression, please check documentation') and_list.append(Condition(l, operator, r)) or_list.append(and_list) self.condition = or_list