From a3e6e98b4ea9e1bfe3cc2574523d028fb414c0d1 Mon Sep 17 00:00:00 2001 From: Florent Date: Sun, 15 Dec 2013 16:47:42 +0100 Subject: [PATCH] Move condition code in BaseApplication The count parameter is now consistent with condition parameter close #1289 --- weboob/tools/application/base.py | 16 ++++++++++------ weboob/tools/application/repl.py | 5 ----- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/weboob/tools/application/base.py b/weboob/tools/application/base.py index 4ccd2364..da56cd23 100644 --- a/weboob/tools/application/base.py +++ b/weboob/tools/application/base.py @@ -34,13 +34,13 @@ from weboob.tools.config.iconfig import ConfigError from weboob.tools.log import createColoredFormatter, getLogger from weboob.tools.misc import to_unicode - __all__ = ['BaseApplication'] class MoreResultsAvailable(Exception): pass + class ApplicationStorage(object): def __init__(self, name, storage): self.name = name @@ -88,7 +88,7 @@ class BaseApplication(object): # Default storage tree STORAGE = {} # Synopsis - SYNOPSIS = 'Usage: %prog [-h] [-dqv] [-b backends] ...\n' + SYNOPSIS = 'Usage: %prog [-h] [-dqv] [-b backends] ...\n' SYNOPSIS += ' %prog [--help] [--version]' # Description DESCRIPTION = None @@ -249,11 +249,15 @@ class BaseApplication(object): return obj def _do_complete_iter(self, backend, count, fields, res): + modif = 0 for i, sub in enumerate(res): - if count and i == count: - raise MoreResultsAvailable() - sub = self._do_complete_obj(backend, fields, sub) - yield sub + if self.condition and not self.condition.is_valid(sub): + modif += 1 + else: + if count and i - modif == count: + raise MoreResultsAvailable() + sub = self._do_complete_obj(backend, fields, sub) + yield sub def _do_complete(self, backend, count, selected_fields, function, *args, **kwargs): assert count is None or count > 0 diff --git a/weboob/tools/application/repl.py b/weboob/tools/application/repl.py index 673e3261..c411a233 100644 --- a/weboob/tools/application/repl.py +++ b/weboob/tools/application/repl.py @@ -480,11 +480,6 @@ class ReplApplication(Cmd, ConsoleApplication): if self.options.condition: self.condition = ResultsCondition(self.options.condition) - # Enable infinite search by default is condition is set - # (count applies on the non-filtered result, and can be confusing for users) - if self._is_default_count: - self.options.count = None - self._is_default_count = False else: self.condition = None