add BrowserToBeContinued exception and handle it

This commit is contained in:
Baptiste Delpey 2015-03-06 17:23:32 +01:00 committed by Romain Bignon
commit 3a05b29bc3
2 changed files with 14 additions and 1 deletions

View file

@ -17,6 +17,7 @@
# You should have received a copy of the GNU Affero General Public License
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
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

View file

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