import bank_models import bank_views import sys from datetime import datetime import curses class Bank: def __init__ ( self ): # initialize the View class self.view = bank_views.View( screen, curses ) self.db = bank_models.db() if 'dev' in sys.argv: self.view.showDev = True self.view_loader( "welcome" ) def view_loader( self, view_name, passing=None ): re = getattr( self.view , view_name )( passing ) if type( re ) == dict: if '_return_to' in re: return getattr( self, re['_return_to'] )( re ) if '_next' in re: self.view_loader( re['_next'] ) return re def sign_up( self, obj ): check = self.db.create_user( obj['name'], obj['password'], obj['permission'] ) # if user name is available if check: message = obj['name'] + " please login" self.view_loader( "login", message ) else: message = "User name taken" self.view_loader( "sign_up", message ) def login( self, obj ): self.user = bank_models.Users( obj['name'], obj['password'] ) if self.user.name: self.view.update_user( [ obj['name'] ] ) getattr( self, self.permission + '_home' )() else: message = "Invalid login" self.login( self.view.login( message ) ) def logOut( self, message=False ): self.view.update_user( [ None ] ) self.view_loader( "welcome" ) def client_home( self, start=0 ): self.user.list_accounts( start ) self.view_loader( 'client_home', array ) def view_account( self, number=None, array={} ): self.account = model.Account( number ) self.amount.user_id = self.user.id if array != {}: array.update( self.account ) else: array = self.account self.view_loader( 'view_account', array ) def account_withdraw( self, amount ): check = self.account.withdraw( amount ) if check: self.view_loader( 'view_account', "Withdraw -" + amount ) else: self.view_account( None, { 'message': "Insufficient funds."} ) def account_deposit( self, amount ): self.account.deposit( amount ) self.view_loader( 'view_account', "Deposit +" + amount ) def account_transfer( self, amount, to_number ): check = self.account.transfer( amount, to_number ) if check: self.view_loader( 'view_account', "Transfered -" + amount + " to " + to_number ) else: self.view_account( None, { 'message': "Insufficient funds."}) try: curses.wrapper( Bank ) except KeyboardInterrupt: print( "Got KeyboardInterrupt exception. Exiting..." ) exit()