From 87f34c19617afc172e80e92f748afada018109e9 Mon Sep 17 00:00:00 2001 From: Christophe Benz Date: Thu, 12 Aug 2010 17:33:43 +0200 Subject: [PATCH] set not loaded fields to NotAvailable --- weboob/capabilities/base.py | 27 ++++++++++++++------------- weboob/tools/application/base.py | 4 ++++ 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/weboob/capabilities/base.py b/weboob/capabilities/base.py index 40dea59a..972e80c1 100644 --- a/weboob/capabilities/base.py +++ b/weboob/capabilities/base.py @@ -18,7 +18,20 @@ from weboob.tools.misc import iter_fields -__all__ = ['IBaseCap', 'NotLoaded', 'LoadingError', 'CapBaseObject'] + +__all__ = ['IBaseCap', 'NotAvailable', 'NotLoaded', 'CapBaseObject'] + + +class NotAvailableMeta(type): + def __str__(self): + return unicode(self).decode('utf-8') + + def __unicode__(self): + return u'Not available' + + +class NotAvailable(object): + __metaclass__ = NotAvailableMeta class NotLoadedMeta(type): @@ -33,18 +46,6 @@ class NotLoaded(object): __metaclass__ = NotLoadedMeta -class LoadingErrorMeta(type): - def __str__(self): - return unicode(self).decode('utf-8') - - def __unicode__(self): - return u'Loading error' - - -class LoadingError(object): - __metaclass__ = LoadingErrorMeta - - class IBaseCap(object): pass diff --git a/weboob/tools/application/base.py b/weboob/tools/application/base.py index 5e69b0f2..2cbccd27 100644 --- a/weboob/tools/application/base.py +++ b/weboob/tools/application/base.py @@ -21,6 +21,7 @@ import logging import optparse from optparse import OptionGroup, OptionParser +from weboob.capabilities.base import NotAvailable, NotLoaded from weboob.core.ouiboube import Weboob from weboob.tools.config.iconfig import ConfigError from weboob.tools.backend import ObjectNotAvailable @@ -203,6 +204,9 @@ class BaseApplication(object): backend.fillobj(obj, fields) except ObjectNotAvailable, e: logging.warning(u'Could not retrieve required fields (%s): %s' % (','.join(fields), e)) + for field in set(fields) - set('*'): + if getattr(obj, field) is NotLoaded: + setattr(obj, field, NotAvailable) return obj def _complete_iter(self, backend, count, fields, res):