98 lines
2.8 KiB
Python
98 lines
2.8 KiB
Python
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()
|