From 8fc7860150c2a705465dc26bda841dd0aa9bd8b0 Mon Sep 17 00:00:00 2001 From: Romain Bignon Date: Sat, 30 Oct 2010 11:21:40 +0200 Subject: [PATCH] $full and $direct selectors work --- weboob/tools/application/base.py | 9 ++------- weboob/tools/application/repl.py | 7 +------ weboob/tools/backend.py | 3 ++- 3 files changed, 5 insertions(+), 14 deletions(-) diff --git a/weboob/tools/application/base.py b/weboob/tools/application/base.py index 7b660416..76e2e84e 100644 --- a/weboob/tools/application/base.py +++ b/weboob/tools/application/base.py @@ -243,15 +243,10 @@ class BaseApplication(object): else: res = getattr(backend, function)(*args, **kwargs) - if selected_fields: - fields = selected_fields - else: - fields = None - if hasattr(res, '__iter__'): - return self._do_complete_iter(backend, count, fields, res) + return self._do_complete_iter(backend, count, selected_fields, res) else: - return self._do_complete_obj(backend, fields, res) + return self._do_complete_obj(backend, selected_fields, res) def parse_args(self, args): self.options, args = self._parser.parse_args(args) diff --git a/weboob/tools/application/repl.py b/weboob/tools/application/repl.py index 542fb59a..16e4dfe6 100644 --- a/weboob/tools/application/repl.py +++ b/weboob/tools/application/repl.py @@ -432,13 +432,8 @@ class ReplApplication(Cmd, BaseApplication): kwargs['backends'] = self.enabled_backends if backends is None else backends fields = self.selected_fields if fields == '$direct': - fields = None + fields = [] elif fields == '$full': - # XXX IT ABSOLUTLY DOESN'T WORK, OBJ ISN'T EXISTANT. - # PLEASE REVIEW THIS CODE. - #fields = [k for k, v in iter_fields(obj)] - # TODO Perhaps this is the core goal to determine what fields to use, - # by creating a singleton AllFields. fields = None return self.weboob.do(self._do_complete, self.options.count, fields, function, *args, **kwargs) diff --git a/weboob/tools/backend.py b/weboob/tools/backend.py index 3591e3e9..e03dd066 100644 --- a/weboob/tools/backend.py +++ b/weboob/tools/backend.py @@ -195,7 +195,7 @@ class BaseBackend(object): def fillobj(self, obj, fields=None): """ - @param fields which fields to fill; if None, only "direct" fields are filled (list) + @param fields which fields to fill; if None, all fields are filled (list) """ def not_loaded(v): return (v is NotLoaded or isinstance(v, CapBaseObject) and not v.__iscomplete__()) @@ -205,6 +205,7 @@ class BaseBackend(object): missing_fields = [] if fields is None: + # Select all fields if isinstance(obj, CapBaseObject): fields = [item[0] for item in obj.iter_fields()] else: