diff --git a/weboob/exceptions.py b/weboob/exceptions.py index a8221a4d..bca509cf 100644 --- a/weboob/exceptions.py +++ b/weboob/exceptions.py @@ -17,6 +17,7 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . +from weboob.tools.value import Value class BrowserIncorrectPassword(Exception): pass @@ -38,6 +39,13 @@ class BrowserUnavailable(Exception): pass +class BrowserToBeContinued(BrowserUnavailable): + def __init__(self, *args): + self.fields = [] + for arg in args: + self.fields.append(Value(label=arg)) + + class BrowserHTTPNotFound(BrowserUnavailable): pass diff --git a/weboob/tools/application/console.py b/weboob/tools/application/console.py index 2b37ad51..ef9292b0 100644 --- a/weboob/tools/application/console.py +++ b/weboob/tools/application/console.py @@ -32,7 +32,7 @@ from weboob.capabilities.account import CapAccount, Account, AccountRegisterErro from weboob.core.backendscfg import BackendAlreadyExists from weboob.core.modules import ModuleLoadError from weboob.core.repositories import ModuleInstallError, IProgress -from weboob.exceptions import BrowserUnavailable, BrowserIncorrectPassword, BrowserForbidden, BrowserSSLError +from weboob.exceptions import BrowserUnavailable, BrowserIncorrectPassword, BrowserForbidden, BrowserSSLError, BrowserToBeContinued from weboob.tools.value import Value, ValueBool, ValueFloat, ValueInt, ValueBackendPassword from weboob.tools.misc import to_unicode from weboob.tools.ordereddict import OrderedDict @@ -560,6 +560,11 @@ class ConsoleApplication(Application): print(u'FATAL(%s): ' % backend.name + self.BOLD + '/!\ SERVER CERTIFICATE IS INVALID /!\\' + self.NC, file=self.stderr) elif isinstance(error, BrowserForbidden): print(u'Error(%s): %s' % (backend.name, msg or 'Forbidden'), file=self.stderr) + elif isinstance(error, BrowserToBeContinued): + for field in error.fields: + v = self.ask(field) + if v: + backend.config[field.label].set(v) elif isinstance(error, BrowserUnavailable): msg = unicode(error) if not msg: