def _processNormAccount(self, raw, account_path, balance): soup = BeautifulSoup(raw) logging.debug('Norm ac path - ' + str(account_path) + ' - end' ) try: if account_path != "": # delete existing current xactions logging.debug('Processing :) norm ' ) builder = StatementBuilder(self.facade, account_path, self.token) self.statementlist.append(builder) self.statementbuilder = self.statementlist[self.current_statement] # we know this is not a credit card isCCard = False # get a fixed balance somewhere?? # balance passed in for RBS # set up our statement self.statementbuilder.make_recent_dif_statement('RBS-recent', 'Scraper', None) # now set the final balance logging.debug("Balance - - - - - - - > " + str(balance)) self.statementbuilder.set_current_balance(balance) # now find all the recent transactions x_table = soup.find('table', attrs={'class' : 'ItemTable'}) if x_table == None: # could easily be no transactions logging.debug(" No xtable ======>") if x_table != None: x_body = x_table.find('tbody') inputs = x_body.findAll('tr') # build the post values up for rows in inputs: atts = {} vals = rows.findAll('td') if vals: cash = '' for i, val in enumerate(vals): data = self.tidy_text(val.text) if i == 0: logging.debug("date ======> " + data) dp = DateParser() try: atts['date'] = dp.ymd_from_date(dp.date_from_small(data)) except: atts['date'] == '' if i == 1: if data == 'ATM': cash = 'CASH - ' if i == 2: if data != "": extra = "" datebit = "" parts = data.split(',') if len(parts) > 1: # match RBS dates - a.la. 8062 14APR11 if re.match('\d{4}\s\d\d[A-Z]{3}\d\d', parts[0]) != None: datebit = parts[0][0:4] + ' ' + parts[0][5:7] + ' ' + parts[0][7:10] # remember pretty_display strips out any words containing a sequence of 3 or more numbers parts = parts[1:] if len(parts) > 1: extra = parts[-1] parts = parts[0:-1] data = ' '.join(parts) disp = (cash + data).strip() atts['display'] = " ".join(disp.split()) atts['extradisplay'] = " ".join( (extra + " " + datebit).split()) if i > 2: # the numbers if data != "" and data != '-': logging.debug('->' + data + '<-') amount = self.normalise_ammount(data) if i == 3: atts['amount'] = amount atts['type'] = 'Credit' if i == 4: atts['amount'] = amount atts['type'] = 'Debit' if i == 5: self.statementbuilder.make_xact(atts) self.statementbuilder.put_statement() self.current_statement = self.current_statement + 1 except Exception, e: logging.exception('RBS parsing error - ' + str(e))
def _processCCAccount(self, raw, account_path, balance): soup = BeautifulSoup(raw) logging.debug('CC ac path - ' + str(account_path) + ' - end' ) try: if account_path != "": # delete existing current xactions logging.debug('Processing :) ' ) builder = StatementBuilder(self.facade, account_path, self.token) self.statementlist.append(builder) self.statementbuilder = self.statementlist[self.current_statement] # we know this is not a credit card isCCard = True # get a fixed balance somewhere?? # passed in for RBS # set up our statement self.statementbuilder.make_recent_dif_statement('RBS-recent', 'Scraper', None) # now set the final balance logging.debug("Balance - - - - - - - > " + str(balance)) self.statementbuilder.set_current_balance(balance) # now find all the recent transactions x_table = soup.find('table', attrs={'class' : 'ItemTable'}) if x_table != None: x_body = x_table.find('tbody') inputs = x_body.findAll('tr') # build the post values up for rows in inputs: atts = {} vals = rows.findAll('td') if vals: datebit = '' for i, val in enumerate(vals): data = self.tidy_text(val.text) if i == 0: logging.debug("date ======> " + data) dp = DateParser() try: atts['date'] = dp.ymd_from_date(dp.date_from_small(data)) except: atts['date'] == '' if i == 1: datebit = data[:-5] if i == 2: if data != 'SALE': # only keep extra xact date for Sales datebit = '' if i == 3: if data != "": atts['display'] = " ".join(data.split()) atts['extradisplay'] = datebit if i > 3: # the numbers if data != "" and data != '-': amount = self.normalise_ammount(data) if i == 4: atts['amount'] = amount atts['type'] = 'Credit' if i == 5: atts['amount'] = amount atts['type'] = 'Debit' if i == 5: self.statementbuilder.make_xact(atts) self.statementbuilder.put_statement() self.current_statement = self.current_statement + 1 except Exception, e: logging.exception('RBS parsing error - ' + str(e))
def _processNormAccount(self, raw, account_path, balance): soup = BeautifulSoup(raw) logging.debug('Norm ac path - ' + str(account_path) + ' - end') try: if account_path != "": # delete existing current xactions logging.debug('Processing :) norm ') builder = StatementBuilder(self.facade, account_path, self.token) self.statementlist.append(builder) self.statementbuilder = self.statementlist[ self.current_statement] # we know this is not a credit card isCCard = False # get a fixed balance somewhere?? # balance passed in for natwest # set up our statement self.statementbuilder.make_recent_dif_statement( 'NatWest-recent', 'Scraper', None) # now set the final balance logging.debug("Balance - - - - - - - > " + str(balance)) self.statementbuilder.set_current_balance(balance) # now find all the recent transactions x_table = soup.find('table', attrs={'class': 'ItemTable'}) if x_table == None: # could easily be no transactions logging.debug(" No xtable ======>") if x_table != None: x_body = x_table.find('tbody') inputs = x_body.findAll('tr') # build the post values up for rows in inputs: atts = {} vals = rows.findAll('td') if vals: cash = '' for i, val in enumerate(vals): data = self.tidy_text(val.text) if i == 0: dp = DateParser() try: atts['date'] = dp.ymd_from_date( dp.date_from_small(data)) except: atts['date'] == '' if i == 1: if data == 'ATM': cash = 'CASH - ' if i == 2: if data != "": extra = "" datebit = "" parts = data.split(',') if len(parts) > 1: # match natwest dates - a.la. 8062 14APR11 if re.match( '\d{4}\s\d\d[A-Z]{3}\d\d', parts[0]) != None: datebit = parts[0][ 0:4] + ' ' + parts[0][ 5:7] + ' ' + parts[0][ 7:10] # remember pretty_display strips out any words containing a sequence of 3 or more numbers parts = parts[1:] if len(parts) > 1: extra = parts[-1] parts = parts[0:-1] data = ' '.join(parts) disp = (cash + data).strip() atts['display'] = " ".join( disp.split()) atts['extradisplay'] = " ".join( (extra + " " + datebit).split()) if i > 2: # the numbers if data != "" and data != '-': amount = self.normalise_ammount(data) if i == 3: atts['amount'] = amount atts['type'] = 'Credit' if i == 4: atts['amount'] = amount atts['type'] = 'Debit' if i == 5: self.statementbuilder.make_xact(atts) self.statementbuilder.put_statement() self.current_statement = self.current_statement + 1 except Exception, e: logging.exception('NatWest parsing error - ' + str(e))
def _processCCAccount(self, raw, account_path, balance): soup = BeautifulSoup(raw) logging.debug('CC ac path - ' + str(account_path) + ' - end') try: if account_path != "": # delete existing current xactions logging.debug('Processing :) ') builder = StatementBuilder(self.facade, account_path, self.token) self.statementlist.append(builder) self.statementbuilder = self.statementlist[ self.current_statement] # we know this is not a credit card isCCard = True # get a fixed balance somewhere?? # passed in for natwest # set up our statement self.statementbuilder.make_recent_dif_statement( 'NatWest-recent', 'Scraper', None) # now set the final balance logging.debug("Balance - - - - - - - > " + str(balance)) self.statementbuilder.set_current_balance(balance) # now find all the recent transactions x_table = soup.find('table', attrs={'class': 'ItemTable'}) if x_table != None: x_body = x_table.find('tbody') inputs = x_body.findAll('tr') # build the post values up for rows in inputs: atts = {} vals = rows.findAll('td') if vals: datebit = '' for i, val in enumerate(vals): data = self.tidy_text(val.text) if i == 0: dp = DateParser() try: atts['date'] = dp.ymd_from_date( dp.date_from_small(data)) except: atts['date'] == '' if i == 1: datebit = data[:-5] if i == 2: if data != 'SALE': # only keep extra xact date for Sales datebit = '' if i == 3: if data != "": atts['display'] = " ".join( data.split()).encode('utf8') atts['extradisplay'] = datebit.encode( 'utf8') if i > 3: # the numbers if data != "" and data != '-': amount = self.normalise_ammount(data) if i == 4: atts['amount'] = amount atts['type'] = 'Credit' if i == 5: atts['amount'] = amount atts['type'] = 'Debit' if i == 5: self.statementbuilder.make_xact(atts) self.statementbuilder.put_statement() self.current_statement = self.current_statement + 1 except Exception, e: logging.exception('NatWest parsing error - ' + str(e))
def _processCCAccount(self, raw, account_path, balance): soup = BeautifulSoup(raw) logging.debug("CC ac path - " + str(account_path) + " - end") try: if account_path != "": # delete existing current xactions logging.debug("Processing :) ") builder = StatementBuilder(self.facade, account_path, self.token) self.statementlist.append(builder) self.statementbuilder = self.statementlist[self.current_statement] # we know this is not a credit card isCCard = True # get a fixed balance somewhere?? # passed in for natwest # set up our statement self.statementbuilder.make_recent_dif_statement("NatWest-recent", "Scraper", None) # now set the final balance logging.debug("Balance - - - - - - - > " + str(balance)) self.statementbuilder.set_current_balance(balance) # now find all the recent transactions x_table = soup.find("table", attrs={"class": "ItemTable"}) if x_table != None: x_body = x_table.find("tbody") inputs = x_body.findAll("tr") # build the post values up for rows in inputs: atts = {} vals = rows.findAll("td") if vals: datebit = "" for i, val in enumerate(vals): data = self.tidy_text(val.text) if i == 0: dp = DateParser() try: atts["date"] = dp.ymd_from_date(dp.date_from_small(data)) except: atts["date"] == "" if i == 1: datebit = data[:-5] if i == 2: if data != "SALE": # only keep extra xact date for Sales datebit = "" if i == 3: if data != "": atts["display"] = " ".join(data.split()).encode("utf8") atts["extradisplay"] = datebit.encode("utf8") if i > 3: # the numbers if data != "" and data != "-": amount = self.normalise_ammount(data) if i == 4: atts["amount"] = amount atts["type"] = "Credit" if i == 5: atts["amount"] = amount atts["type"] = "Debit" if i == 5: self.statementbuilder.make_xact(atts) self.statementbuilder.put_statement() self.current_statement = self.current_statement + 1 except Exception, e: logging.exception("NatWest parsing error - " + str(e))
def _processNormAccount(self, raw, account_path, balance): soup = BeautifulSoup(raw) logging.debug("Norm ac path - " + str(account_path) + " - end") try: if account_path != "": # delete existing current xactions logging.debug("Processing :) norm ") builder = StatementBuilder(self.facade, account_path, self.token) self.statementlist.append(builder) self.statementbuilder = self.statementlist[self.current_statement] # we know this is not a credit card isCCard = False # get a fixed balance somewhere?? # balance passed in for natwest # set up our statement self.statementbuilder.make_recent_dif_statement("NatWest-recent", "Scraper", None) # now set the final balance logging.debug("Balance - - - - - - - > " + str(balance)) self.statementbuilder.set_current_balance(balance) # now find all the recent transactions x_table = soup.find("table", attrs={"class": "ItemTable"}) if x_table == None: # could easily be no transactions logging.debug(" No xtable ======>") if x_table != None: x_body = x_table.find("tbody") inputs = x_body.findAll("tr") # build the post values up for rows in inputs: atts = {} vals = rows.findAll("td") if vals: cash = "" for i, val in enumerate(vals): data = self.tidy_text(val.text) if i == 0: dp = DateParser() try: atts["date"] = dp.ymd_from_date(dp.date_from_small(data)) except: atts["date"] == "" if i == 1: if data == "ATM": cash = "CASH - " if i == 2: if data != "": extra = "" datebit = "" parts = data.split(",") if len(parts) > 1: # match natwest dates - a.la. 8062 14APR11 if re.match("\d{4}\s\d\d[A-Z]{3}\d\d", parts[0]) != None: datebit = parts[0][0:4] + " " + parts[0][5:7] + " " + parts[0][7:10] # remember pretty_display strips out any words containing a sequence of 3 or more numbers parts = parts[1:] if len(parts) > 1: extra = parts[-1] parts = parts[0:-1] data = " ".join(parts) disp = (cash + data).strip() atts["display"] = " ".join(disp.split()) atts["extradisplay"] = " ".join((extra + " " + datebit).split()) if i > 2: # the numbers if data != "" and data != "-": amount = self.normalise_ammount(data) if i == 3: atts["amount"] = amount atts["type"] = "Credit" if i == 4: atts["amount"] = amount atts["type"] = "Debit" if i == 5: self.statementbuilder.make_xact(atts) self.statementbuilder.put_statement() self.current_statement = self.current_statement + 1 except Exception, e: logging.exception("NatWest parsing error - " + str(e))