From 5d6b3d6abc21d39e2e987fba9c8f6be3f1137ccb Mon Sep 17 00:00:00 2001 From: Christophe Benz Date: Sun, 14 Nov 2010 01:51:33 +0100 Subject: [PATCH] add inspect command --- weboob/tools/application/repl.py | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/weboob/tools/application/repl.py b/weboob/tools/application/repl.py index e2dc78fc..209a8ebb 100644 --- a/weboob/tools/application/repl.py +++ b/weboob/tools/application/repl.py @@ -80,7 +80,7 @@ class ReplApplication(Cmd, BaseApplication): 'Type "help" to display available commands.', '', )) - self.weboob_commands = ['backends', 'condition', 'count', 'formatter', 'logging', 'select', 'quit'] + self.weboob_commands = ['backends', 'condition', 'count', 'formatter', 'inspect', 'logging', 'select', 'quit'] self.hidden_commands = set(['EOF']) self.formatters_loader = FormattersLoader() @@ -1015,3 +1015,33 @@ class ReplApplication(Cmd, BaseApplication): except ValueError: backend_name = None return _id, backend_name + + def do_inspect(self, line): + """ + inspect BACKEND_NAME + """ + backend_name = line.strip() + if not backend_name: + print 'Please specify a backend name.' + return + backends = set(backend for backend in self.enabled_backends if backend.name == backend_name) + if not backends: + print 'No backend found for "%s"' % backend_name + return + backend = backends.pop() + if not hasattr(backend, '_browser'): + print 'No browser created for backend "%s" yet. Please invoke a command before.' % backend.name + return + browser = backend._browser + data = browser.parser.tostring(browser.page.document) + try: + from webkit_mechanize_browser.browser import Browser + from webkit_mechanize_browser.page import Page + except ImportError: + print data + else: + page = Page(core=browser, data=data, uri=browser._response.geturl()) + browser = Browser(view=page.view) + + def complete_inspect(self, text, line, begidx, endidx): + return sorted(set(backend.name for backend in self.enabled_backends))