Convert CapBill to browser2, step 1

This commit is contained in:
Florent 2014-04-01 10:15:43 +02:00
commit 2ddd15fda9
2 changed files with 24 additions and 27 deletions

View file

@ -215,13 +215,12 @@ class IngBrowser(LoginBrowser):
############# CapBill ############# ############# CapBill #############
@need_login
def get_subscriptions(self): def get_subscriptions(self):
self.location('/protected/pages/common/estatement/eStatement.jsf') return self.billpage.stay_or_go().iter_account()
return self.page.iter_account()
def get_bills(self, subscription): def get_bills(self, subscription):
if not self.is_on_page(BillsPage): self.billpage.stay_or_go()
self.location(self.billpage)
data = {"AJAXREQUEST": "_viewRoot", data = {"AJAXREQUEST": "_viewRoot",
"accountsel_form": "accountsel_form", "accountsel_form": "accountsel_form",
subscription._formid: subscription._formid, subscription._formid: subscription._formid,
@ -229,7 +228,7 @@ class IngBrowser(LoginBrowser):
"javax.faces.ViewState": subscription._javax, "javax.faces.ViewState": subscription._javax,
"transfer_issuer_radio": subscription.id "transfer_issuer_radio": subscription.id
} }
self.location(self.billpage, urllib.urlencode(data)) self.billpage.go(data=data)
while True: while True:
for bill in self.page.iter_bills(subscription.id): for bill in self.page.iter_bills(subscription.id):
yield bill yield bill

View file

@ -19,34 +19,32 @@
from weboob.tools.mech import ClientForm from weboob.tools.mech import ClientForm
from weboob.capabilities.bill import Bill, Subscription from weboob.capabilities.bill import Bill, Subscription
from weboob.tools.browser import BasePage from weboob.tools.browser2 import HTMLPage
from weboob.tools.browser2.filters import Filter, Attr, CleanText
from weboob.tools.browser2.page import ListElement, ItemElement, method
__all__ = ['BillsPage'] __all__ = ['BillsPage']
class FormId(Filter):
def filter(self, txt):
formid = txt.split("parameters")[1]
formid = txt.split("'")[2]
return formid
class BillsPage(BasePage):
def on_loaded(self):
pass
def iter_account(self): class BillsPage(HTMLPage):
ul = self.document.xpath('//ul[@class="unstyled striped"]') @method
javax = self.document.xpath("//form[@id='accountsel_form']/input[@name='javax.faces.ViewState']") class iter_account(ListElement):
javax = javax[0].attrib['value'] item_xpath = '//ul[@class="unstyled striped"]/li'
#subscriber = unicode(self.document.find('//h5').text)
for li in ul[0].xpath('li'): class item(ItemElement):
inputs = li.xpath('input')[0] klass = Subscription
label = li.xpath('label')[0]
label = unicode(label.text) obj__javax = Attr("//form[@id='accountsel_form']/input[@name='javax.faces.ViewState']", 'value')
formid = inputs.attrib['onclick'] obj_id = Attr('input', "value")
formid = formid.split("parameters")[1] obj_label = CleanText('label')
formid = formid.split("'")[2] obj__formid = FormId(Attr('input', 'onclick'))
id = inputs.attrib['value']
subscription = Subscription(id)
subscription.label = label
subscription._formid = formid
subscription._javax = javax
yield subscription
def postpredown(self, id): def postpredown(self, id):
self.browser.select_form("statements_form") self.browser.select_form("statements_form")