enhance inspect, use browser.location then browser.open as fallback

This commit is contained in:
Christophe Benz 2010-11-17 16:26:52 +01:00
commit bf5741759a
2 changed files with 46 additions and 10 deletions

View file

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

29
weboob/tools/inspect.py Normal file
View file

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