Ejemplo n.º 1
0
def welcome_homepage():
    while True:  
        selection = view.welcome_screen()
        if selection not in ["1","2","3"]:
            view.improper_selection()
            continue 

        if selection == "1":
            username, balance, password, confirm_password = view.get_username(), view.add_balance(), view.get_password(), view.confirm_password() 

            if password != confirm_password:
                view.improper_password()
                continue  
            if not balance.isdigit() or int(balance) < 0:
                view.improper_balance()
                continue
            
            account = Account(username = username, balance = balance)
            hashed_pw = Account.set_password(account, password)
            account.save()
            logged_in_homepage(account)
            return 
        elif selection == "2":
            username, password = view.get_username(), view.get_password()
            logged_in_account = Account.login(username=username, password=password)
            
            if logged_in_account:
                logged_in_homepage(logged_in_account)
                return
            else:
                print("Invalid credentials supplied")
                continue
        elif selection == "3":
            view.goodbye()
            return
Ejemplo n.º 2
0
 def setUp(self):
     if os.path.exists(Account.filepath):
         os.unlink(Account.filepath)
     greg = Account("Greg")
     greg.balance = 10.50
     greg.pin = "1234"
     greg.save()
Ejemplo n.º 3
0
def login_menu():
    while True:
        try:
            user_input = view.login_menu()
            if int(user_input) == 3:
                view.program_end()
                sys.exit()
            elif int(user_input) == 2:
                username = view.username_inpt()
                pwd = util.hash_pass(view.password_inpt())
                user = Account.login(username, pwd)
                if user == None:
                    view.invalid_info()
                    return login_menu()
                return user
            elif int(user_input) == 1:
                user = Account()
                user.username = view.username_inpt()
                user.set_password(util.hash_pass(view.set_password_inpt()))
                user.balance = view.deposit_inpt()
                user.save()
                view.acc_created(user.username)
                return user
        except ValueError:
            view.choose_valid()
Ejemplo n.º 4
0
def createaccount(name, password):
    new_account = Account(username=name)
    new_account.set_password(password)
    ak = new_account.create_api_key()
    new_account.save()
    msg = "Account successfully created, API api_key = {}".format(ak)
    return jsonify({'message':msg})
Ejemplo n.º 5
0
def create():
    if not request.json or 'username' not in request.json or 'password_hash' not in request.json:
        return jsonify(BAD_REQUEST), 401
    account = Account(username=request.json['username'],
                      password_hash=request.json['password_hash'])
    account.save()
    token = encodeAuthToken(account.pk)

    return jsonify({'status': 'success', 'auth_token': str(token)})
Ejemplo n.º 6
0
def deposit(name, password, amount):
    if not Account.login(name, password):
        msg = "Invalid login credentials, pls retry"
    else:
        pk = Account.login(name, password).pk
        account_deposit = Account(pk=pk)
        new_bal = account_deposit.deposit(float(amount))
        account_deposit.save()
        msg = "New Balance = {}".format(new_bal)
    return jsonify({'message': msg})
Ejemplo n.º 7
0
def deposit(key, amount):
    if Account.api_authenticate(key) == None:
        msg = "Invalid login credentials, pls retry"
    else:
        #pk = Account.login(name, password).pk
        pk = Account.api_authenticate(key).pk
        account_deposit = Account(pk=pk)
        new_bal = account_deposit.deposit(float(amount))
        account_deposit.save()
        msg = "New Balance = {}".format(new_bal)
    return jsonify({'message': msg})
Ejemplo n.º 8
0
def account_create():
    username, password, f_name, l_name, deposit = view.create_account(
    )  #takes all return values from create_account
    crypted_password = crypt_password(password)

    new_account = Account(username=username,
                          crypted_password=crypted_password,
                          f_name=f_name,
                          l_name=l_name,
                          balance=deposit)
    new_account.save()
Ejemplo n.º 9
0
def create_account():
    username = view.create_username()
    password = view.create_password()
    password_hash = hash_password(password)
    new_account = Account(username=username,
                          password_hash=password_hash,
                          balance=0)
    new_account.generate_api_key()
    new_account.save()
    view.login_menu()
    login()
Ejemplo n.º 10
0
def deposit(api_key):
    if Account.api_authenticate(api_key) == None:
        msg = "Invalid login credentials, pls retry"
    else: 
        if not request.json or 'amount' not in request.json:
            return jsonify({"error": "bad request"}), 400
        pk = Account.api_authenticate(api_key).pk
        account_deposit = Account(pk=pk)
        new_bal = account_deposit.deposit(float(request.json['amount']))
        account_deposit.save()
        msg = "New Balance = {}".format(new_bal)
    return jsonify({'message':msg})    
Ejemplo n.º 11
0
def seed(dbpath=DBPATH):
    ORM.dbpath = dbpath

    mike_bloom = Account(username='******', balance=10000.00)
    mike_bloom.set_password('password')
    mike_bloom.save()

    # trade for a purchase of 10 shares yesterday
    # trade for a sell of 5 shares today

    tsla_position = Position(ticker='tsla',
                             shares=5,
                             account_pk=mike_bloom.values['pk'])
    tsla_position.save()
Ejemplo n.º 12
0
def create_account_selection():
    while True:
        newuser = Account()
        view.enter_user_name()
        username = input()
        newuser.username = username
        view.enter_password()
        password = getpass.getpass()
        newuser.origpassword = password
        newuser.set_password(password)
        #newuser.apikey=20
        newuser.set_apikey()
        newuser.balance = 0.00
        newuser.save()
        view.account_success_message()
        return newuser
Ejemplo n.º 13
0
 def test_admin_fld(self):
     tester = Account(first='Test',
                      last='Ad',
                      username='******',
                      password_hash='temp',
                      balance=0,
                      email='*****@*****.**')
     second = Account(first='Test',
                      last='Ad',
                      username='******',
                      password_hash='temp',
                      balance=0,
                      email='*****@*****.**')
     tester.save()
     self.assertEqual(tester.admin, 1,
                      "username admin should make admin field 1 for true")
     self.assertEqual(second.admin, 0, "this should not be admin")
Ejemplo n.º 14
0
def seed(dbpath=DBPATH):
    ORM.dbpath = dbpath
    
    mike_bloom = Account(username='******', balance=10000.00)
    mike_bloom.set_password('password')
    mike_bloom.save()

    # trade for a purchase of 10 shares yesterday
    # trade for a sell of 5 shares today

    buy_trade = Trade(accounts_pk = mike_bloom.pk, ticker='tsla', volume=10, price=100.0)
    sell_trade = Trade(accounts_pk=mike_bloom.pk, ticker='tsla', volume=5, price=200.0)
    buy_trade.save()
    sell_trade.save()

    tsla_position = Position(ticker='tsla', shares=5, accounts_pk=mike_bloom.pk)
    tsla_position.save()
Ejemplo n.º 15
0
 def test_insert(self):  #Tests Save - insert function
     tester = Account(first='Homer',
                      last='Simpson',
                      username='******',
                      password_hash="password",
                      balance=0,
                      email='*****@*****.**')
     tester.save()
     result = Account.all()  #using the all fucntion to count rows in DB
     self.assertEqual(
         len(result), 2,
         "The first row was the set up the new row was inserted")
     self.assertEqual(
         result[0].first, "Jim",
         "all func populates attributes, checking first for row[0] / pk1")
     self.assertEqual(
         result[1].email, "*****@*****.**",
         "all func populates attributes, checking email for row[1] / pk2")
Ejemplo n.º 16
0
def create_account():
    view.intro_create_acc()
    first = view.input_first()
    last = view.input_last()
    username = view.input_username()
    password = view.input_password(
    )  #this is the start of what will become the password hash
    balance = 0
    email = view.input_email()
    new_account = Account(first=first,
                          last=last,
                          username=username,
                          balance=balance,
                          email=email)
    #password_hash=password_hash - not used b/c save in set pw fucntion
    new_account.set_password(
        password)  #creates the password has which is missing in the above line
    if Account.from_username(username) is None:
        new_account.save(
        )  #save function to put the new account into the sql db
    else:
        raise view.UsernameUnavailableError
Ejemplo n.º 17
0
m_names = json.load(open("bogus/names_m.json", "r"))
f_names = json.load(open("bogus/names_f.json", "r"))

mlen = len(m_names)
flen = len(f_names)

lipsum = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus efficitur urna nec interdum scelerisque. Quisque tempor augue at ipsum dignissim, eget pharetra ipsum ullamcorper. Proin eu eleifend enim. Nam iaculis placerat molestie. Praesent feugiat rutrum arcu eget semper. Praesent efficitur massa eu urna bibendum, sit amet efficitur sapien molestie. Ut euismod urna quis placerat aliquam. Sed elementum nunc eu posuere laoreet. Vestibulum congue eleifend convallis."
liptag = lipsum.split(" ")
imgs = []

for e in range(0, 84):
    n = surnames[random.randint(0, len(surnames) - 1)]
    if e % 2:
        fn = m_names[random.randint(0, mlen-1)]
    else:
        fn = f_names[random.randint(0, flen-1)]
    print("making user: %s %s" % (fn, n))
    usr = User(uname=fn[:1]+n[:4], email="*****@*****.**" % (fn, n), password="******")
    User.activate_account(usr)
    profile = Account(usr, fname=fn, lname=n, dob=str(random.randint(1980, 2000))+"-07-06")
    profile.images.append("data:image/jpeg;base64,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H/jP5wJq8HjQhTweLAP+a1TOvP1lVx8bf8McD7oF4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGb/jcYQOi6NZ701SxB9lmJYx/yhAmPwosTl4I0w/tL9Rcfdn5CfyQLewEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQM9/Gvxt+GtNf3rrtK/x4Gon+QQJo8MzSWp4H0JW9WrzLh7vZv1HLuX8FcD64FoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFHfGI0QW8H+YfXG1TCuX6iy5GN/hyDAmvuKYvJwfw6PjpmO38YLj8mgTvAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAqB4r+HzcEak37PI05/wAc6iv/ANkCYe5/Ty8KcNjbb/celkj06nDpP+sCXoCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFXfE10dr+CNcVfVEw7j+7RqGLa34qhH1QJr7DsHytE0evbby9L09Nvhy4lQ2/KBzeAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAff1xufg7iEfDTrW/gZHP+GBMvCGKExMVB6Jj0KPsWpQP7oH14CAgICAgICAgICAgICAgICB/9k=")
    profile.tags = [liptag[random.randint(0, len(liptag) - 1)] for i in range(0, 6)]
    profile.gender = ["Female", "Male"][e % 2]
    profile.interest= ["Men", "Women", "Both"][random.randint(0, 2)]
    profile.biography = lipsum
    print("Registered user ", usr.uname)
    profile.save()
    


Ejemplo n.º 18
0
def createaccount(name, password):
    new_account = Account(username=name)
    new_account.set_password(password)
    new_account.save()
    msg = "Account successfully created"
    return jsonify({'message': msg})
Ejemplo n.º 19
0
 def testSave(self):
     greg = Account("Greg")
     greg.balance = 10000.90
     greg.save()
     newgreg = Account("Greg")
     self.assertEqual(newgreg.balance, 10000.90)
Ejemplo n.º 20
0
def main():
    while True:
        selection = views.welcome_menu()
        if selection is None:
            #Bad input
            views.generic_msg(
                "Please enter a number that corresponds to a stated option")
        elif selection == 3:
            #Exit
            views.generic_msg("Bye: Thanks for using Terminal Trader")
            break
        elif selection == 1:
            #Create account
            new_username = views.get_input("Username")
            new_password = views.get_input("Password")
            new_account = Account(username=new_username)
            new_account.set_password(new_password)
            new_account.save()
        elif selection == 2:
            #Login
            login_username = views.get_input("Username")
            login_password = views.get_input("Password")
            if not Account.login(login_username, login_password):
                views.generic_msg(
                    "Failed to find an account for the given Username/Password, pls retry"
                )
            else:
                #Retrieve account balance & pk for re-use
                balance = Account()
                current_bal, pk = balance.get_bal(login_username,
                                                  login_password)
                while True:
                    choice = views.main_menu()
                    if choice is None:
                        #Bad input
                        views.generic_msg(
                            "Please enter a number that corresponds to a stated option"
                        )
                    elif choice == 7:
                        #Exit
                        break
                    elif choice == 1:  #View Balance & Positions
                        views.generic_msg(
                            "Your current balance = {}".format(current_bal))
                        while True:
                            position_choice = views.position_menu()
                            if position_choice is None:
                                #Bad input
                                views.generic_msg(
                                    "Please enter a number that corresponds to a stated option"
                                )
                            elif position_choice == 3:
                                #Exit
                                break
                            elif position_choice == 1:
                                #Retrieve and display a given position, taking in a ticker symbol
                                ticker = views.get_input(
                                    "Please enter a Ticker Symbol")
                                user_position = Account(pk=pk)
                                position = user_position.get_position_for(
                                    ticker)
                                views.show_positions(position)
                            elif position_choice == 2:
                                #Retrieve and display all positions
                                user_positions = Account(pk=pk)
                                positions = user_positions.get_positions()
                                for position in positions:
                                    views.show_positions(position)
                    elif choice == 2:  #Deposit money
                        deposit_amount = float(
                            views.get_input("Deposit Amount"))
                        account_deposit = Account()
                        new_bal = account_deposit.deposit(
                            login_username, login_password, deposit_amount)
                        account_deposit.save()
                        views.generic_msg("New Balance = {}".format(new_bal))
                    elif choice == 3:  #Look up stock price
                        ticker = views.get_input(
                            "Please enter a Ticker Symbol")
                        print(util.get_price(ticker))
                    elif choice == 4:  #Buy stock
                        ticker = views.get_input(
                            "Please enter a Ticker Symbol")
                        shares_buy = views.get_input(
                            "Please enter the number of shares to buy")

                    elif choice == 5:  #Sell stock
                        ticker = views.get_input(
                            "Please enter a Ticker Symbol")
                        shares_sell = views.get_input(
                            "Please enter the number of shares to sell")
                    elif choice == 6:  #View Trade History
                        while True:
                            trade_choice = views.trades_menu()
                            if trade_choice is None:
                                #Bad input
                                views.generic_msg(
                                    "Please enter a number that corresponds to a stated option"
                                )
                            elif trade_choice == 3:
                                #Exit
                                break
                            elif trade_choice == 1:
                                #Retrieve and display trades re a give ticker symbol
                                ticker = views.get_input(
                                    "Please enter a Ticker Symbol")
                                user_trade = Account(pk=pk)
                                trades = user_trade.get_trades_for(ticker)
                                views.show_trades(trades)
                            elif trade_choice == 2:
                                #Retrieve and display all trades
                                user_trades = Account(pk=pk)
                                trades = user_trades.get_trades()
                                for trade in trades:
                                    views.show_trades(trade)
Ejemplo n.º 21
0
 def testInsert(self):
     user = Account(account_id="1", username="******", password_hash='somehash', balance=1, api_key='12345678901234567890')
     user.save()
     saved_user = Account.retrieve_api_key(user)
     self.assertEqual(user.api_key, saved_user[4])
Ejemplo n.º 22
0
def main_loop():
    while True:
        choice = user_menu()
        if choice is None: # incorrect selection
            bad_input('Please select option')
        elif choice == '4': # exit
            goodbye()
            break

        elif choice == '1':
            login_input = login_username_pw()
            verified_account = Account.login(login_input)
            if verified_account:
                db_password_hash = verified_account[2]
                password_verify = checkpw(login_input[1].encode(),
                    db_password_hash)
                if password_verify:
                    account = Account(account_id = verified_account[0])
                    account.username = verified_account[1]
                    account.balance = int(verified_account[3])
                    while True:
                        choice = main_menu()
                        if choice is None:
                            bad_input('Please select option')
                        elif choice == '1': # view account balance
                            display_balance(account.balance)
                        elif choice == '2': # deposit funds
                            account.balance += deposit()
                            Account.update_balance(account)
                        elif choice == '3': # buy stock
                            buy_stock = trade_stock()
                            account.buy(buy_stock[0], buy_stock[1])
                        elif choice == '4': #sell stock
                            buy_stock = trade_stock()
                            account.sell(buy_stock[0], buy_stock[1])
                        elif choice == '5': # view positions
                            display_positions(Account.get_positions(account))
                        elif choice == '6': # view trades
                            display_trade_history(Account.get_trades(account))
                        elif choice == '7': # lookup price of stock
                            ticker = view.lookup_ticker()
                            print("Ticker: {} is currently: ${}".format(ticker, get_price(ticker)))
                        elif choice == '8': # See API Keys
                            display_api(Account.retrieve_api_key(account))
                        elif choice == '9': # logout
                            goodbye()
                        else:
                            bad_input('Retry')
                else:
                    bad_input('Incorrect password')
            else:
                bad_input('Incorrect username')
        elif choice == '2': # login with api
            user_api_key = login_api_key()
            # print(user_api_key)
            user = Account.api_authenticate(user_api_key)
            display_user_from_api_key(user)
        elif choice == '3': # create new account
            account_details[0] = "mark"
            account_details[1] = "1234"
            account_details[2] = 1000
            account_details = create_account()
            account = Account()
            account.username = account_details[0]
            account.password_hash = account_details[1]
            account.balance = account_details[2]
            account.api_key = account.generate_api_key()
            Account.save(account)
Ejemplo n.º 23
0
def main():
    while True:
        views.generic_msg("Welcome to Terminal Trader !")
        selection = views.welcome_menu()
        if selection is None:  #Bad input
            views.generic_msg(
                "Please enter a number that corresponds to a stated option")
        elif selection == 3:  #Exit
            views.generic_msg("Bye: Thanks for using Terminal Trader")
            break
        elif selection == 1:  #Create account
            new_username = views.get_input("Username")
            new_password = views.get_input("Password")
            new_account = Account(username=new_username)
            new_account.set_password(new_password)
            new_account.save()
        elif selection == 2:  #Login
            login_username = views.get_input("Username")
            login_password = views.get_input("Password")
            if not Account.login(login_username, login_password):
                views.generic_msg(
                    "Failed to find an account for the given Username/Password, pls retry"
                )
            else:  #Store account pk for re-use
                pk = Account.login(login_username, login_password).pk
                while True:
                    choice = views.main_menu()
                    if choice is None:  #Bad input
                        views.generic_msg(
                            "Please enter a number that corresponds \
                                           to a stated option")
                    elif choice == 8:  #Exit
                        break
                    elif choice == 1:  #View Balance & Positions
                        positions_sub_menu(pk)
                    elif choice == 2:  #Deposit money
                        deposit_amount = float(
                            views.get_input("Deposit Amount"))
                        account_deposit = Account(pk=pk)
                        new_bal = account_deposit.deposit(deposit_amount)
                        account_deposit.save()
                        views.generic_msg("New Balance = {}".format(new_bal))
                    elif choice == 3:  #Look up stock price
                        ticker = views.get_input(
                            "Please enter a Ticker Symbol")
                        quote = util.get_price(ticker)
                        if not quote:
                            views.generic_msg(
                                "The Ticker Symbol entered does not exist")
                        else:
                            views.stock_price(ticker, quote)
                    elif choice == 4:  #Look up ticker from Co. name
                        co_name = views.get_input("Please enter Company Name")
                        companies = util.get_ticker(co_name)
                        if not companies:
                            views.generic_msg(
                                "No matches for input Company Name")
                        else:
                            for co in companies:
                                views.show_companies(co)
                    elif choice == 5:  #Buy stock
                        ticker = views.get_input(
                            "Please enter a Ticker Symbol")
                        shares_buy = views.get_input(
                            "Please enter the number of shares to buy")
                        buy_txn = Account(pk=pk)
                        buy_txn.buy(ticker, shares_buy)
                        views.generic_msg("Buy transaction complete")
                    elif choice == 6:  #Sell stock
                        ticker = views.get_input(
                            "Please enter a Ticker Symbol")
                        shares_sell = views.get_input(
                            "Please enter the number of shares to sell")
                        sell_txn = Account(pk=pk)
                        sell_txn.sell(ticker, shares_sell)
                        views.generic_msg("Sell transaction complete")
                    elif choice == 7:  #View Trade History
                        trades_sub_menu(pk)