From bf5741759a35bbe7bc8300c998a54071d21b4198 Mon Sep 17 00:00:00 2001 From: Christophe Benz Date: Wed, 17 Nov 2010 16:26:52 +0100 Subject: [PATCH] enhance inspect, use browser.location then browser.open as fallback --- weboob/tools/application/repl.py | 27 +++++++++++++++++---------- weboob/tools/inspect.py | 29 +++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 10 deletions(-) create mode 100644 weboob/tools/inspect.py diff --git a/weboob/tools/application/repl.py b/weboob/tools/application/repl.py index 52f3a5ff..d67c5d43 100644 --- a/weboob/tools/application/repl.py +++ b/weboob/tools/application/repl.py @@ -1053,16 +1053,23 @@ class ReplApplication(Cmd, BaseApplication): def do_inspect(self, line): """ inspect BACKEND_NAME + + Display the HTML string of the current page of the specified backend's browser. + + If webkit_mechanize_browser Python module is installed, HTML is displayed in a WebKit GUI. """ - 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 len(self.enabled_backends) == 1: + backend = list(self.enabled_backends)[0] + else: + 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 @@ -1070,7 +1077,7 @@ class ReplApplication(Cmd, BaseApplication): data = browser.parser.tostring(browser.page.document) try: from webkit_mechanize_browser.browser import Browser - from webkit_mechanize_browser.page import Page + from weboob.tools.inspect import Page except ImportError: print data else: diff --git a/weboob/tools/inspect.py b/weboob/tools/inspect.py new file mode 100644 index 00000000..30183e81 --- /dev/null +++ b/weboob/tools/inspect.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- + +# Copyright(C) 2010 Christophe Benz +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, version 3 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + +import webkit_mechanize_browser.page + + +class Page(webkit_mechanize_browser.page.Page): + def load_uri(self, uri): + self.core.location(uri) + if self.core.page: + data = self.core.parser.tostring(self.core.page.document) + self.view.load_html_string(data, uri) + else: + webkit_mechanize_browser.page.Page.load_uri(self, uri)