Add multi-account support for bills

This commit is contained in:
Florent 2013-02-03 11:23:08 +01:00
commit c0fc9c7dd6
3 changed files with 29 additions and 23 deletions

View file

@ -83,7 +83,7 @@ class FreeMobileBackend(BaseBackend, ICapBill):
subscription = self.get_subscription(subscription)
with self.browser:
for bill in self.browser.iter_bills(subscription.id):
for bill in self.browser.iter_bills(subscription):
yield bill
def get_details(self, subscription):

View file

@ -91,10 +91,10 @@ class Freemobile(BaseBrowser):
self.location('/moncompte/index.php?page=suiviconso')
return self.page.get_details(subscription)
def iter_bills(self, parentid):
def iter_bills(self, subscription):
if not self.is_on_page(DetailsPage):
self.location('/moncompte/index.php?page=suiviconso')
return self.page.date_bills()
return self.page.date_bills(subscription)
def get_bill(self, id):
assert isinstance(id, basestring)

View file

@ -18,6 +18,7 @@
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
import re
from datetime import datetime, date, time
from decimal import Decimal
@ -41,7 +42,7 @@ class DetailsPage(BasePage):
def on_loaded(self):
self.details = {}
self.datebills = []
self.datebills = {}
for div in self.document.xpath('//div[@class="infosLigne pointer"]'):
phonenumber = div.text
phonenumber = phonenumber.split("-")[-1].strip()
@ -60,23 +61,26 @@ class DetailsPage(BasePage):
divint = div.xpath('div[@class="international hide"]')[0]
self.parse_div(divint, u"Appels émis : %s | Appels reçus : %s", num, True)
divbill = self.document.xpath('//div[@class="facture"]')[0]
for trbill in divbill.xpath('table/tr'):
mydate = unicode(trbill.find('td').text.split(":")[1].strip())
bill = Bill()
bill.label = unicode(mydate)
billid = mydate.replace('-', '')
billid = billid[4:8] + billid[2:4] + billid[0:2]
bill.id = phonenumber + "." + billid
bill.date = date(*reversed([int(x) for x in mydate.split("-")]))
alink = trbill.find('td/a')
if alink.attrib.get("class") == "linkModal tips":
bill.format = u'html'
bill._url = alink.attrib.get('data-link')
else:
bill.format = u"pdf"
bill._url = alink.attrib.get('href')
self.datebills.append(bill)
for divbill in self.document.xpath('//div[@class="facture"]'):
for trbill in divbill.xpath('table/tr'):
mydate = unicode(trbill.find('td').text.split(":")[1].strip())
for alink in trbill.xpath('td/a'):
bill = Bill()
bill.label = unicode(mydate)
billid = mydate.replace('-', '')
billid = billid[4:8] + billid[2:4] + billid[0:2]
bill.id = billid
bill.date = date(*reversed([int(x) for x in mydate.split("-")]))
bill.format = u"pdf"
bill._url = alink.attrib.get('href')
if "pdfrecap" in alink.attrib.get('href'):
bill.id = "recap-" + bill.id
localid = re.search('&l=(?P<id>\d*)&id',
alink.attrib.get('href')).group('id')
if not self.datebills.has_key(localid):
self.datebills[localid] = []
self.datebills[localid].append(bill)
def parse_div(self, divglobal, string, num, inter=False):
divs = divglobal.xpath('div[@class="detail"]')
@ -120,8 +124,10 @@ class DetailsPage(BasePage):
detail.id = subscription.id + detail.id
yield detail
def date_bills(self):
return self.datebills
def date_bills(self, subscription):
for bill in self.datebills[subscription._login]:
bill.id = subscription.id + '.' + bill.id
yield bill
def get_renew_date(self, subscription):
login = subscription._login