def get_ofx_date_range(data: bytes): soup = bs4.BeautifulSoup(io.BytesIO(data), 'html.parser') dtstart = find_child(soup, 'dtstart', parse_ofx_time) dtend = find_child(soup, 'dtend', parse_ofx_time) if dtstart is None or dtend is None: logger.debug('Data received: %r', data) messages = soup.find_all('message') logger.info('Messages: %r', [message.text for message in messages]) return None return dtstart, dtend
def test_find_child(self): contents = clean_xml(""" <STMTTRN> <TRNTYPE>DEBIT <DTPOSTED>20131122000000.000[-7:MST] <TRNAMT>-13.93 <FITID>320133260227320537 <REFNUM>320133260227320537 <NAME>WHOLE & FDS HOU 10236 02124201320 <MEMO>042102720272124201320 </MEMO> </NAME> </REFNUM> </FITID> </TRNAMT> </DTPOSTED> </TRNTYPE> </STMTTRN> """) node = bs4.BeautifulSoup(contents, 'lxml') self.assertEqual('20131122000000.000[-7:MST]', ofx.find_child(node, 'dtposted')) self.assertEqual('-13.93', ofx.find_child(node, 'trnamt')) self.assertEqual('320133260227320537', ofx.find_child(node, 'fitid')) self.assertEqual('320133260227320537', ofx.find_child(node, 'refnum')) self.assertEqual('WHOLE & FDS HOU 10236 02124201320', ofx.find_child(node, 'name')) self.assertEqual('042102720272124201320', ofx.find_child(node, 'memo')) # Test conversions. self.assertEqual(datetime.datetime(2013, 11, 22, 0, 0, 0), ofx.find_child(node, 'dtposted', ofx.parse_ofx_time)) self.assertEqual(D('-13.93'), ofx.find_child(node, 'trnamt', D))