import sys import argparse import os import capital_one import database parser = argparse.ArgumentParser(prog="BudgetBear", description="Calculate a budget fit for a bear.") parser.add_argument('files', type=str, nargs='+', help='File to parse transactions from.') args = parser.parse_args() username = 'ciphercules' file_parsers = [capital_one.Parser()] for f in args.files: for file_parser in file_parsers: # Use the first successful parser. transactions = file_parser.parse(f) if not transactions: continue # Add to database database.instance.connect() with database.instance.atomic(): # Add source file first. source = database.Source.create( filename=os.path.basename(f), type=file_parser.source, user=username ) # Add each transaction for transaction in transactions: date, description, amount = transaction database.Transaction.create( user=username, transaction_date=date, description=description, amount=amount, source=source ) database.instance.close() # We successfully updated database with this parser, exit loop. break