$full and $direct selectors work

This commit is contained in:
Romain Bignon 2010-10-30 11:21:40 +02:00
commit 8fc7860150
3 changed files with 5 additions and 14 deletions

View file

@ -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)

View file

@ -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)

View file

@ -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: