def testAddAccount(self): c = OfxConfig(file_name=self.temp_file.name) i = Institution(id='1',org='org',url='url',username='******',password='******') a = CreditCardAccount(institution=i,number='12345') c.add_account(a) self.assertEqual( len(c.accounts()), 1 ) self.assertEqual( c.account(a.local_id()).local_id(), a.local_id() )
def testAddAccount(self): c = OfxConfig(file_name=self.temp_file.name) i = Institution(id='1', org='org', url='url', username='******', password='******') a = CreditCardAccount(institution=i, number='12345') c.add_account(a) self.assertEqual(len(c.accounts()), 1) self.assertEqual(c.account(a.local_id()).local_id(), a.local_id())
def run(): global GlobalConfig parser = argparse.ArgumentParser(prog='ofxclient') parser.add_argument('-a', '--account') parser.add_argument('-d', '--download', type=argparse.FileType('wb', 0)) parser.add_argument('-o', '--open', action='store_true') parser.add_argument('-v', '--verbose', action='store_true') parser.add_argument('-c', '--config', help='config file path') parser.add_argument('--download-days', default=DOWNLOAD_DAYS, type=int, help='number of days to download (default: %s)' % DOWNLOAD_DAYS) parser.add_argument( '--ofx-version', default=DEFAULT_OFX_VERSION, type=int, help='ofx version to use for new accounts (default: %s)' % DEFAULT_OFX_VERSION) args = parser.parse_args() if args.config: GlobalConfig = OfxConfig(file_name=args.config) else: GlobalConfig = OfxConfig() accounts = GlobalConfig.accounts() account_ids = [a.local_id() for a in accounts] if args.verbose: logging.basicConfig(level=logging.DEBUG) if args.download: if accounts: if args.account: a = GlobalConfig.account(args.account) ofxdata = a.download(days=args.download_days) else: ofxdata = combined_download(accounts, days=args.download_days) if IS_PYTHON_2: args.download.write(ofxdata.read()) else: args.download.write(ofxdata.read().encode()) if args.open: open_with_ofx_handler(args.download.name) sys.exit(0) else: print("no accounts configured") main_menu(args)
def main(): log.info("Started...") conn = connect(config_database_connect) cur = conn.cursor(cursor_factory=DictCursor) sql = "select * from accounts_types where download=true" cur.execute(sql) banks = cur.fetchall() for bank in banks: try: log.info("Downloading: " + " " + bank['description']) GlobalConfig = OfxConfig() a = GlobalConfig.account(bank['id']) ofxdata = a.download(days=0) f = open(path.expanduser('~/tmp/ofxdata.tmp'), 'w') f.write(ofxdata.read()) f.close() f = open(path.expanduser('~/tmp/ofxdata.tmp'), 'r') parsed = OfxParser.parse(f) f.close() log.info("OfxParser complete") positions = {} for pos in parsed.account.statement.positions: positions[pos.security] = round(pos.units * pos.unit_price, 2) log.info("Downloaded: " + str(bank['description']) + " " + str(pos.security)) sql = "select * from accounts where type=" + str(bank['type']) cur.execute(sql) accounts = cur.fetchall() for account in accounts: if account['name'] not in positions: raise Exception('account ' + account['name'] + ' not present in download') log.info(bank['description'] + '\t' + account['name_local'] + '\t' + str(positions[account['name']])) sql = "update constituents set value=" + str( positions[account['name']] ) + "where symbol='" + account['name_local'] + "'" cur.execute(sql) conn.commit() log.info("Set: " + str(account['name_local'])) except Exception as err: log.exception(err) log.error("Failed loading for bank: " + bank['description']) # Close the db cur.close() conn.close() log.info("Completed")
def main(): log.info("Started...") config = ConfigParser.SafeConfigParser() config.read(os.path.expanduser('~/.Kumamon')) connect = config.get('Database','Connect') conn = psycopg2.connect( connect ) cur = conn.cursor(cursor_factory=psycopg2.extras.DictCursor) sql = "select * from accounts_types where download=true"; cur.execute(sql) banks = cur.fetchall() for bank in banks: try: log.info("Downloading: " + " " + bank['description']) GlobalConfig = OfxConfig() a = GlobalConfig.account(bank['id']) ofxdata = a.download(days=0) f = open(os.path.expanduser('~/tmp/ofxdata.tmp'), 'w') f.write(ofxdata.read()) f.close() f = open(os.path.expanduser('~/tmp/ofxdata.tmp'), 'r') parsed = OfxParser.parse(f) f.close() log.info("OfxParser complete") positions = {} for pos in parsed.account.statement.positions: positions[pos.security] = round(pos.units * pos.unit_price, 2) log.info("Downloaded: " + str(bank['description']) + " " + str(pos.security)) sql = "select * from accounts where type=" + str(bank['type']); cur.execute(sql) accounts = cur.fetchall() for account in accounts: if account['name'] not in positions: raise Exception('account ' + account['name'] + ' not present in download') log.info( bank['description'] + '\t' + account['name_local'] + '\t' + str(positions[account['name']]) ) sql = "update constituents set value=" + str(positions[account['name']]) + "where symbol='" + account['name_local'] + "'" cur.execute(sql) conn.commit() log.info("Set: " + str(account['name_local'])) except Exception as err: log.exception(err) log.error("Failed loading for bank: " + bank['description']) send_mail_html("FAILURE: Ofxdownload.py", str( err ) ) # Close the db cur.close() conn.close() log.info("Completed")
def run(): global GlobalConfig parser = argparse.ArgumentParser(prog="ofxclient") parser.add_argument("-a", "--account") parser.add_argument("-d", "--download", type=argparse.FileType("wb", 0)) parser.add_argument("-o", "--open", action="store_true") parser.add_argument("-v", "--verbose", action="store_true") parser.add_argument("-c", "--config", help="config file path") parser.add_argument( "--download-days", default=DOWNLOAD_DAYS, type=int, help="number of days to download (default: %s)" % DOWNLOAD_DAYS, ) parser.add_argument( "--ofx-version", default=DEFAULT_OFX_VERSION, type=int, help="ofx version to use for new accounts (default: %s)" % DEFAULT_OFX_VERSION, ) args = parser.parse_args() if args.config: GlobalConfig = OfxConfig(file_name=args.config) else: GlobalConfig = OfxConfig() accounts = GlobalConfig.accounts() account_ids = [a.local_id() for a in accounts] if args.verbose: logging.basicConfig(level=logging.DEBUG) if args.download: if accounts: if args.account: a = GlobalConfig.account(args.account) ofxdata = a.download(days=args.download_days) else: ofxdata = combined_download(accounts, days=args.download_days) args.download.write(ofxdata.read()) if args.open: open_with_ofx_handler(args.download.name) sys.exit(0) else: print("no accounts configured") main_menu(args)
def testLoadFromFile(self): c = OfxConfig(file_name=self.temp_file.name) i = Institution(id='1',org='org',url='url',username='******',password='******') a = CreditCardAccount(institution=i,number='12345') c.add_account(a) c.save() c = OfxConfig(file_name=self.temp_file.name) got = c.account(a.local_id()) self.assertEqual( len(c.accounts()), 1 ) self.assertEqual( got.local_id(), a.local_id() ) self.assertEqual( got.number, a.number ) self.assertEqual( got.institution.local_id(), a.institution.local_id() ) self.assertEqual( got.institution.id, a.institution.id ) self.assertEqual( got.institution.org, a.institution.org ) self.assertEqual( got.institution.url, a.institution.url ) self.assertEqual( got.institution.username, a.institution.username ) self.assertEqual( got.institution.password, a.institution.password )
def run(): global GlobalConfig parser = argparse.ArgumentParser(prog='ofxclient') parser.add_argument('-a', '--account') parser.add_argument('-d', '--download', type=argparse.FileType('wb', 0)) parser.add_argument('-o', '--open', action='store_true') parser.add_argument('-v', '--verbose', action='store_true') parser.add_argument('-c', '--config', help='config file path') parser.add_argument('--download-days', default=DOWNLOAD_DAYS, type=int, help='number of days to download (default: %s)' % DOWNLOAD_DAYS) parser.add_argument('--ofx-version', default=DEFAULT_OFX_VERSION, type=int, help='ofx version to use for new accounts (default: %s)' % DEFAULT_OFX_VERSION) args = parser.parse_args() if args.config: GlobalConfig = OfxConfig(file_name=args.config) else: GlobalConfig = OfxConfig() accounts = GlobalConfig.accounts() account_ids = [a.local_id() for a in accounts] if args.verbose: logging.basicConfig(level=logging.DEBUG) if args.download: if accounts: if args.account: a = GlobalConfig.account(args.account) ofxdata = a.download(days=args.download_days) else: ofxdata = combined_download(accounts, days=args.download_days) args.download.write(ofxdata.read().encode()) if args.open: open_with_ofx_handler(args.download.name) sys.exit(0) else: print("no accounts configured") main_menu(args)
def testLoadFromFile(self): c = OfxConfig(file_name=self.temp_file.name) i = Institution(id='1', org='org', url='url', username='******', password='******') a = CreditCardAccount(institution=i, number='12345') c.add_account(a) c.save() c = OfxConfig(file_name=self.temp_file.name) got = c.account(a.local_id()) self.assertEqual(len(c.accounts()), 1) self.assertEqual(got.local_id(), a.local_id()) self.assertEqual(got.number, a.number) self.assertEqual(got.institution.local_id(), a.institution.local_id()) self.assertEqual(got.institution.id, a.institution.id) self.assertEqual(got.institution.org, a.institution.org) self.assertEqual(got.institution.url, a.institution.url) self.assertEqual(got.institution.username, a.institution.username) self.assertEqual(got.institution.password, a.institution.password)
def run(): global GlobalConfig parser = argparse.ArgumentParser(prog='ofxclient') parser.add_argument('-a', '--account') parser.add_argument('-d', '--download', type=argparse.FileType('wb', 0)) parser.add_argument('-o', '--open', action='store_true') parser.add_argument('-v', '--verbose', action='store_true') parser.add_argument('-c', '--config', help='config file path') args = parser.parse_args() if args.config: GlobalConfig = OfxConfig(file_name=args.config) else: GlobalConfig = OfxConfig() accounts = GlobalConfig.accounts() account_ids = [a.local_id() for a in accounts] if args.verbose: logging.basicConfig(level=logging.DEBUG) if args.download: if accounts: if args.account: a = GlobalConfig.account(args.account) ofxdata = a.download(days=DOWNLOAD_DAYS) else: ofxdata = combined_download(accounts, days=DOWNLOAD_DAYS) args.download.write(ofxdata.read()) if args.open: open_with_ofx_handler(args.download.name) sys.exit(0) else: print("no accounts configured") main_menu()