def get_calls(self): table = self.document.xpath('//table/tbody')[0] for tr in table.xpath('tr'): tds = tr.xpath('td') rawdate = tds[0].text_content() splitdate = rawdate.split('-') month_no = self.months.index(splitdate[1]) + 1 mydate = date(int(splitdate[2]), month_no, int(splitdate[0])) rawtime = tds[1].text_content() mytime = time(*[int(x) for x in rawtime.split(":")]) price = re.sub(u'[^\d\-\.]', '', tds[6].text) detail = Detail() detail.datetime = datetime.combine(mydate, mytime) detail.label = u"%s from %s to %s - %s" % ( tds[2].text, tds[3].text, tds[4].text, tds[5].text) try: detail.price = Decimal(price) except InvalidOperation: detail.price = Decimal(0) # free calls detail.currency = Currency.CUR_EUR yield detail
def get_balance(self, subscription): if not isinstance(subscription, Subscription): subscription = self.get_subscription(subscription) balance = Detail() balance.price = subscription._balance balance.label = u"Balance" balance.currency = Currency.CUR_EUR return balance
def get_balance(self, subscription): if not isinstance(subscription, Subscription): subscription = self.get_subscription(subscription) balance = Detail() balance.id = "%s-balance" % subscription.id balance.price = subscription._balance balance.label = u"Balance %s" % subscription.id balance.currency = u'EUR' return balance
def _iter_divs(self, divs, num, inter=False): for div in divs: detail = Detail() detail.label = CleanText('div[@class="titre"]/p')(div) detail.id = "-" + detail.label.split(' ')[1].lower() if inter: detail.label = detail.label + u" (international)" detail.id = detail.id + "-inter" detail.infos = CleanText('div[@class="conso"]/p')(div) detail.price = CleanDecimal('div[@class="horsForfait"]/p/span', default=Decimal(0), replace_dots=True)(div) detail.currency = Currency('div[@class="horsForfait"]/p/span')(div) self.details[num].append(detail)
def _parse_voice(self, div, string, num, inter=False): voicediv = div.xpath('div[@class="conso"]')[0] voice = Detail() voice.id = "-voice" voice.label = CleanText('div[@class="titre"]/p')(div) if inter: voice.label = voice.label + " (international)" voice.id = voice.id + "-inter" voice.price = CleanDecimal('div[@class="horsForfait"]/p/span', default=Decimal(0), replace_dots=True)(div) voice.currency = Currency('div[@class="horsForfait"]/p/span')(div) voice1 = CleanText('.//span[@class="actif"][1]')(voicediv) voice2 = CleanText('.//span[@class="actif"][2]')(voicediv) voice.infos = unicode(string) % (voice1, voice2) return voice
def get_calls(self): table = self.document.xpath('//table/tbody')[0] for tr in table.xpath('tr'): tds = tr.xpath('td') rawdate = tds[0].text_content() splitdate = rawdate.split('-') month_no = self.months.index(splitdate[1]) + 1 mydate = date(int(splitdate[2]), month_no, int(splitdate[0])) rawtime = tds[1].text_content() mytime = time(*[int(x) for x in rawtime.split(":")]) price = re.sub(u'[^\d\-\.]', '', tds[6].text) detail = Detail() detail.datetime = datetime.combine(mydate, mytime) detail.label = u"%s from %s to %s - %s" % (tds[2].text, tds[3].text, tds[4].text, tds[5].text) try: detail.price = Decimal(price) except InvalidOperation: detail.price = Decimal(0) # free calls detail.currency = 'EUR' yield detail