From 3c11c40ac5d1d6ec7711a2ddfa9b4461d7939c10 Mon Sep 17 00:00:00 2001 From: Romain Bignon Date: Wed, 7 Apr 2010 14:35:23 +0200 Subject: [PATCH] logging on cragr in perhaps fixed. --- weboob/backends/cragr/browser.py | 29 +++++++++++++++----- weboob/backends/cragr/pages/accounts_list.py | 4 +-- weboob/backends/cragr/pages/login.py | 20 ++++++++------ 3 files changed, 35 insertions(+), 18 deletions(-) diff --git a/weboob/backends/cragr/browser.py b/weboob/backends/cragr/browser.py index 3d3a3226..b41d3aeb 100644 --- a/weboob/backends/cragr/browser.py +++ b/weboob/backends/cragr/browser.py @@ -37,26 +37,41 @@ class Cragr(Browser): } Browser.__init__(self, *args, **kwargs) + def viewing_html(self): + """ + As the fucking HTTP server returns a document in unknown mimetype + 'application/vnd.wap.xhtml+xml' it is not recognized by mechanize. + + So this is a fucking hack. + """ + return True + def home(self): - self.location('https://%s/login/process' % self.DOMAIN) + self.location('https://%s/' % self.DOMAIN) def is_logged(self): - return not self.is_on_page(pages.LoginPage) or self.page.is_logged() + return self.page and self.page.is_logged() or self.is_logging def login(self): assert isinstance(self.username, (str,unicode)) assert isinstance(self.password, (str,unicode)) + self.is_logging = True + print 'kikoo' if not self.is_on_page(pages.LoginPage): self.home() - self.is_logging = True - self.page.login(self.username, self.password) - - if self.is_on_page(pages.LoginPage): - raise BrowserIncorrectPassword() + print '1' + try: + self.page.login(self.username, self.password) + except Exception, e: + print type(e), e + raise self.is_logging = False + if not self.is_logged(): + raise BrowserIncorrectPassword() + def get_accounts_list(self): if not self.is_on_page(pages.AccountsList): self.home() diff --git a/weboob/backends/cragr/pages/accounts_list.py b/weboob/backends/cragr/pages/accounts_list.py index bd63b04f..ca97a633 100644 --- a/weboob/backends/cragr/pages/accounts_list.py +++ b/weboob/backends/cragr/pages/accounts_list.py @@ -19,9 +19,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. """ from weboob.capabilities.bank import Account -from weboob.tools.browser import BasePage +from .base import CragrBasePage -class AccountsList(BasePage): +class AccountsList(CragrBasePage): def loaded(self): pass diff --git a/weboob/backends/cragr/pages/login.py b/weboob/backends/cragr/pages/login.py index 249b88d6..391f4bd5 100644 --- a/weboob/backends/cragr/pages/login.py +++ b/weboob/backends/cragr/pages/login.py @@ -20,14 +20,15 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. import ClientForm -from weboob.tools.browser import BasePage +from .base import CragrBasePage -class LoginPage(BasePage): +class LoginPage(CragrBasePage): def loaded(self): pass def login(self, login, password): - self.browser.select_form() + self.browser.select_form(nr=0) + print self.browser.controls try: self.browser['numero'] = login self.browser['code'] = password @@ -35,11 +36,12 @@ class LoginPage(BasePage): try: self.browser['userLogin'] = login self.browser['userPassword'] = password - except ClientForm.ControlNotFoundError: - print 'WTF' - return + except ClientForm.ControlNotFoundError, e: + print 'WTF', e + self.browser.controls.append(ClientForm.TextControl('text', 'userLogin', {'value': ''})) + self.browser.controls.append(ClientForm.TextControl('text', 'userPassword', {'value': ''})) + self.browser.set_all_readonly(False) + self.browser['userLogin'] = login + self.browser['userPassword'] = password self.browser.submit() - -class ConfirmPage(BasePage): - pass