#!/usr/bin/env python import sys sys.path.append('../lib') from spot.books import Books from spot.account import Account books = Books('Replace me', 'sqlite:///') def print_help(): for command, dictionary in commands.items(): print "%s\t%s" % (command, dictionary['definition']) def list_accounts(): for account in books.accounts(): print "%s\t%s %s" % (account.name, account.balance(), account.units) def add_account(): sys.stdout.write('Account Name: ') name = sys.stdin.readline().strip() sys.stdout.write('Units: ') units = sys.stdin.readline().strip() books.add_account(Account(name,units)) def add_bill(): sys.stdout.write('Name of bill? ') name = sys.stdin.readline().strip() sys.stdout.write('Amount? ') amount = float(sys.stdin.readline().strip()) # group is the encapsulation I'm looking for group.add_bill(name, amount) def setup_wizard(): sys.stdout.write('Units? ') units = sys.stdin.readline().strip() sys.stdout.write('Group members, comma separated: ') members = sys.stdin.readline().strip().split(',') books.add_account(Account('Group Owed', units)) books.add_account(Account('Expenses', units)) members_account = Account('Members', units) books.add_account(members_account) for member in members: acc = Account(member.strip(), units) acc.parent = members_account books.add_account(acc) commands = { 'h': { 'function': print_help, 'definition': 'displays this help message' }, 'l': { 'function': list_accounts, 'definition': 'list accounts' }, 'a': { 'function': add_account, 'definition': 'add an account' }, 's': { 'function': setup_wizard, 'definition': 'setup initial books' }, 'bill' : { 'function': add_bill, 'definition': 'enter a bill' }, 'quit': { 'function': sys.exit, 'definition': 'quit' }, } if __name__ == '__main__': prompt = "('h' for help) > " #chart = new AccountChart while (True): sys.stdout.write(prompt) line = sys.stdin.readline() if commands.has_key(line.strip()): commands[line.strip()]['function']()