From 3aa286fb9439def97d720a52ba323925dbe4a794 Mon Sep 17 00:00:00 2001 From: Romain Bignon Date: Tue, 5 Apr 2011 08:44:42 +0200 Subject: [PATCH] factorize code to check loaded backends --- weboob/tools/application/console.py | 83 ++++++++++++++++------------- 1 file changed, 46 insertions(+), 37 deletions(-) diff --git a/weboob/tools/application/console.py b/weboob/tools/application/console.py index 7c91f211..9e0f0f8a 100644 --- a/weboob/tools/application/console.py +++ b/weboob/tools/application/console.py @@ -82,51 +82,60 @@ class ConsoleApplication(BaseApplication): for name, backend in ret.iteritems(): self.enabled_backends.add(backend) + + self.check_loaded_backends() + + return ret + + def check_loaded_backends(self, default_config=None): while len(self.enabled_backends) == 0: print 'Warning: there is currently no configured backend for %s' % self.APPNAME if not self.ask('Do you want to configure backends?', default=True): - break + return False - self.weboob.modules_loader.load_all() - r = '' - while r != 'q': - backends = [] - print '\nAvailable backends:' - for name, backend in sorted(self.weboob.modules_loader.loaded.iteritems()): - if not self.is_backend_loadable(backend): - continue - backends.append(name) - loaded = ' ' - for bi in self.weboob.iter_backends(): - if bi.NAME == name: - if loaded == ' ': - loaded = 'X' - elif loaded == 'X': - loaded = 2 - else: - loaded += 1 - print '%s%d)%s [%s] %s%-15s%s %s' % (self.BOLD, len(backends), self.NC, loaded, - self.BOLD, name, self.NC, backend.description) - print '%sq)%s --stop--\n' % (self.BOLD, self.NC) - r = self.ask('Select a backend to add (q to stop)', regexp='^(\d+|q)$') + self.prompt_create_backends(default_config) - if r.isdigit(): - i = int(r) - 1 - if i < 0 or i >= len(backends): - print 'Error: %s is not a valid choice' % r - continue - name = backends[i] - try: - inst = self.add_backend(name) - if inst: - self.load_backends(names=[inst]) - except (KeyboardInterrupt, EOFError): - print '\nAborted.' + return True + + def prompt_create_backends(self, default_config=None): + self.weboob.modules_loader.load_all() + r = '' + while r != 'q': + backends = [] + print '\nAvailable backends:' + for name, backend in sorted(self.weboob.modules_loader.loaded.iteritems()): + if not self.is_backend_loadable(backend): + continue + backends.append(name) + loaded = ' ' + for bi in self.weboob.iter_backends(): + if bi.NAME == name: + if loaded == ' ': + loaded = 'X' + elif loaded == 'X': + loaded = 2 + else: + loaded += 1 + print '%s%d)%s [%s] %s%-15s%s %s' % (self.BOLD, len(backends), self.NC, loaded, + self.BOLD, name, self.NC, backend.description) + print '%sq)%s --stop--\n' % (self.BOLD, self.NC) + r = self.ask('Select a backend to add (q to stop)', regexp='^(\d+|q)$') + + if r.isdigit(): + i = int(r) - 1 + if i < 0 or i >= len(backends): + print 'Error: %s is not a valid choice' % r + continue + name = backends[i] + try: + inst = self.add_backend(name, default_config) + if inst: + self.load_backends(names=[inst]) + except (KeyboardInterrupt, EOFError): + print '\nAborted.' print 'Right right!' - return ret - def _handle_options(self): self.load_default_backends()