diff --git a/modules/creditmutuel/pages.py b/modules/creditmutuel/pages.py index 682ea74d..1d5fe242 100644 --- a/modules/creditmutuel/pages.py +++ b/modules/creditmutuel/pages.py @@ -130,7 +130,7 @@ class AccountsPage(LoggedPage, HTMLPage): self.env['id'] = id # Handle real balances - page = self.page.browser.open(link) + page = self.page.browser.open(link).page coming = page.find_amount(u"Opérations à venir") accounting = page.find_amount(u"Solde comptable") @@ -242,7 +242,7 @@ class CardPage(OperationsPage, LoggedPage): def __iter__(self): card_link = self.el.get('href') history_url = '%s/%s/fr/banque/%s' % (self.page.browser.BASEURL, self.page.browser.currentSubBank, card_link) - page = self.page.browser.location(history_url) + page = self.page.browser.location(history_url).page for op in page.get_history(): yield op diff --git a/weboob/tools/browser2/browser.py b/weboob/tools/browser2/browser.py index 3b54de29..a81df3b2 100644 --- a/weboob/tools/browser2/browser.py +++ b/weboob/tools/browser2/browser.py @@ -157,7 +157,14 @@ class BaseBrowser(object): self.url = self.response.url return response - def open(self, url, referrer=None, allow_redirects=True, **kwargs): + def open(self, url, referrer=None, + allow_redirects=True, + stream=None, + timeout=None, + verify=None, + cert=None, + proxies=None, + **kwargs): """ Make an HTTP request like a browser does: * follow redirects (unless disabled) @@ -187,14 +194,17 @@ class BaseBrowser(object): :rtype: :class:`requests.Response` """ - return self._open(url, referrer, allow_redirects, **kwargs) - - def _open(self, url, referrer=None, allow_redirects=True, **kwargs): req = self.build_request(url, referrer, **kwargs) preq = self.session.prepare_request(req) # call python-requests - response = self.session.send(preq, allow_redirects=allow_redirects) + response = self.session.send(preq, + allow_redirects=allow_redirects, + stream=stream, + timeout=timeout, + verify=verify, + cert=cert, + proxies=proxies) if allow_redirects: response = self.handle_refresh(response) @@ -232,7 +242,7 @@ class BaseBrowser(object): def handle_refresh(self, response): """ - Called by _open, to handle Refresh HTTP header. + Called by open, to handle Refresh HTTP header. It only redirect to the refresh URL if the sleep time is inferior to REFRESH_MAX. @@ -248,7 +258,7 @@ class BaseBrowser(object): if sleep <= self.REFRESH_MAX: self.logger.debug('Refresh to %s' % url) - return self._open(url) + return self.open(url) else: self.logger.debug('Do not refresh to %s because %s > REFRESH_MAX(%s)' % (url, sleep, self.REFRESH_MAX)) return response diff --git a/weboob/tools/browser2/page.py b/weboob/tools/browser2/page.py index 624f6775..0318fae0 100644 --- a/weboob/tools/browser2/page.py +++ b/weboob/tools/browser2/page.py @@ -162,15 +162,18 @@ class PagesBrowser(DomainBrowser): def open(self, *args, **kwargs): response = super(PagesBrowser, self).open(*args, **kwargs) + response.page = None # Try to handle the response page with an URL instance. for url in self._urls.itervalues(): page = url.handle(response) if page is not None: self.logger.debug('Handle %s with %s' % (response.url, page.__class__.__name__)) - return page + response.page = page + break - self.logger.debug('Unable to handle %s' % response.url) + if response.page is None: + self.logger.debug('Unable to handle %s' % response.url) return response def location(self, *args, **kwargs): @@ -178,24 +181,17 @@ class PagesBrowser(DomainBrowser): # Call leave hook. self.page.on_leave() - page = self.open(*args, **kwargs) - - # If open() returns a BasePage instance, store it as the current page. - if isinstance(page, BasePage): - response = page.response - self.page = page - else: - response = page - self.page = None + response = self.open(*args, **kwargs) self.response = response + self.page = response.page self.url = response.url if self.page is not None: # Call load hook. self.page.on_load() - return page + return response def pagination(self, func, *args, **kwargs): """