コード例 #1
0
ファイル: ofx.py プロジェクト: sharadmv/finance-dl
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
コード例 #2
0
ファイル: ofx_test.py プロジェクト: droogmic/beancount
    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 &amp; 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))