Example #1
0
def get_equ(token):
    account = Account.api_authenticate(token)
    if account:
        res = Position.from_position_equity(account.pk)
        total = res.total_equ(account.pk)
        return jsonify({'equity': total})
    return jsonify({'error': 'invalid key'})
Example #2
0
def trades_for(api_key, ticker):
    account = Account.api_authenticate(api_key)
    if not account:
        return jsonify(UNAUTHORIZED), 401
    trades = account.get_trades_for(ticker)
    json_list = [trade.json() for trade in trades]
    return jsonify({"username": account.username, "trades": json_list})
Example #3
0
def positions(api_key):
    account = Account.api_authenticate(api_key)
    if not account:
        return jsonify(UNAUTHORIZED), 401
    positions = account.get_positions()
    json_list = [position.json() for position in positions]
    return jsonify({"username": account.username, "positions": json_list})
Example #4
0
def get_num_shares(api_key, ticker):
    user = Account.api_authenticate(api_key)
    if user:
        total_shares = Position.one_from_account(user.pk, ticker)

        return jsonify({"total": total_shares})
    return jsonify({'error': 'invalid key'})
Example #5
0
def tracker_chart(api_key, ticker):
    user = Account.api_authenticate(api_key)
    if user:
        new_user = Tracking.pk_authenticate(user.pk)

        tracker = tracking_chart(ticker)
        return jsonify({"tracker": tracker})
    return jsonify({"error": "failed"})
Example #6
0
def deposit(api_key, amount):
    account = Account.api_authenticate(api_key)
    if account:
        account.balance += int(amount)
        account.save()
        return jsonify({"new balance": account.balance, "status": "success"})
    else:
        return jsonify({"error": "authentication error"})
Example #7
0
def positions_sum(api_key):
    account = Account.api_authenticate(api_key)
    if not account:
        return jsonify(UNAUTHORIZED), 401
    positions = account.get_positions()
    tot_sum = 0
    for position in positions:
        tot_sum += util.get_price(position.ticker) * position.shares
    return jsonify({"account_sum": tot_sum})
Example #8
0
def track(ticker, api_key):
    data = request.get_json()
    ticker = data.get('ticker')
    account = Account.api_authenticate(api_key)
    if account:
        new_track = Tracking(None, account.pk, ticker)
        new_track.save()
        return jsonify({"tracking": ticker})
    return jsonify({"error": "no track added"})
Example #9
0
def look_price(api_key, ticker):
    user = Account.api_authenticate(api_key)
    if user:
        new_user = Tracking.pk_authenticate(user.pk)
        price = get_price_of_ticker(ticker)
        change = day_change(ticker)
        # tracker = tracking_chart(ticker)
        return jsonify({'current_price': price, 'change': change})
    return jsonify({"error": "failed"})
Example #10
0
def viewall(api_key):
    account = Account.api_authenticate(api_key)
    if not account:
        return jsonify(UNAUTHORIZED), 401
    stocks = account.getallprices()
    if stocks == False:
        return jsonify(NOTFOUND), 404
    json_list = [allstocks for allstocks in stocks]
    return jsonify({"username": account.username, "stocks": json_list})
 def testApiAuthenticate(self):
     account = Account(pk=2,
                       username="******",
                       password_hash="password",
                       balance=50000)
     api_key = account.generate_api_key()
     account.save()
     test = account.api_authenticate(api_key)
     self.assertAlmostEqual(account, test)
Example #12
0
def position_for(api_key, ticker):
    account = Account.api_authenticate(api_key)
    if not account:
        return jsonify(UNAUTHORIZED), 401
    position = account.get_position_for(ticker)
    return jsonify({
        "username": account.username,
        "positions": position.json()
    })
Example #13
0
def accoun_info(api_key):

    account = Account.api_authenticate(api_key)

    data = {}

    data["balance"] = account.balance
    data["username"] = account.username

    return jsonify(data)
    def testLogin(self):
        account3 = Account(username="******", pin="1234", balance=20.00)
        api = account3.generate_api_key()
        account3.save()
        get_api = account3.get_api()

        account4 = Account.api_authenticate(get_api)

        self.assertEqual(account4.username, "mike_bloom")
        self.assertEqual(account4.pin, "1234")
        self.assertEqual(account4.balance, 20.00)
Example #15
0
def deposit(api_key):
    if not request.json or 'amount' not in request.json:
        return jsonify(BADREQUEST), 400
    account = Account.api_authenticate(api_key)
    if not account:
        return jsonify(UNAUTHORIZED), 401
    amount = request.json['amount']

    account.deposit(float(amount))
    account.save()
    return jsonify({"username": account.username, "balance": account.balance})
Example #16
0
def deposit():
    account = Account.api_authenticate(session['api_key'])
    if not account:
        return redirect(url_for('login'))
    else:
        if request.method == 'GET':
            return render_template('deposit.html', balance=view.bal_and_pos(account.balance))
        else:
            amt = float(request.form['deposit_amount'])
            account.deposit(amt)
            return render_template('deposit.html', amt1=view.deposit_outp(amt), balance=view.bal_and_pos(account.balance))
Example #17
0
def withdraw(api_key):
    if not request.json or 'amount' not in request.json:
        return jsonify(BAD_REQUEST), 400
    account = Account.api_authenticate(api_key)
    if not account:
        return jsonify(UNAUTHORIZED), 401
    amount = request.json['amount']
    if amount < 0:
        return jsonify(BAD_REQUEST), 400
    account.withdraw(amount)
    account.save()
    return jsonify({"username": account.username, "balance": account.balance})
Example #18
0
def trades():
    account = Account.api_authenticate(session['api_key'])
    if not account:
        return redirect(url_for('login'))
    trades = account.get_trades()
    if len(trades) == 0:
        return render_template('trades.html', Total=view.total_trades(0))
    else:
        totals = view.total_trades(len(trades))
        tradelist = []
        for trade in trades:
            tradelist.append(view.trade_detail(trade.volume, trade.ticker, trade.price, trade.price * trade.volume, trade.time))
        return render_template('trades.html', Total=totals, Title=tradelist)
Example #19
0
def reset():
    account = Account.api_authenticate(session['api_key'])
    if not account:
        return redirect(url_for('login'))
    else:
        if request.method == 'GET':
            return render_template('reset.html')
        else:
            if request.form['pword'] != request.form['pword_confirm']:
                return render_template('reset.html', message="Passwords entered do not match.  Please re-enter a new password.")
            else:
                account.set_password(util.hash_pass(request.form['pword']))
                account.save()
                return render_template('reset.html', message="Password reset successful.")
Example #20
0
def lookup(ticker, api_key):
    user = Account.api_authenticate(api_key)
    if user:
        price = get_price(ticker)
        description = stock_description(ticker)
        chart_data = chart(ticker)
        logo = Logo(ticker)
        related = related_Companies(ticker)
        return jsonify({
            'current_price': price,
            "des": description,
            "chartData": chart_data,
            "logo": logo
        })
    return jsonify({"error": "failed"})
Example #21
0
def deposit(api_key):
    print(request.json)
    if not request.json or 'amount' not in request.json:
        return jsonify(BAD_REQUEST), 400
    account = Account.api_authenticate(api_key)
    if not account:
        return jsonify(UNAUTHORIZED), 401
    amount = request.json['amount']
    if not (isinstance(amount, float)
            or isinstance(amount, int)) or amount < 0:
        return jsonify(BAD_REQUEST), 400
    account.deposit(amount)
    account.save()
    rdict = {"username": account.username, "balance": account.balance}
    print(rdict)
    return jsonify({"username": account.username, "balance": account.balance})
Example #22
0
def balance():
    account = Account.api_authenticate(session['api_key'])
    if not account:
        return redirect(url_for('login'))
    cash = account.balance
    positions = account.get_positions()
    if len(positions) == 0:
        return render_template('balance.html', Title=view.bal_and_pos(cash) + " " + view.no_positions())
    else:
        bal = 0
        for position in positions:
            ticker = position.ticker
            shares = position.shares
            px = util.get_price(ticker)
            bal += px * shares
        return render_template('balance.html', Title=view.totbal(bal) + "\n" + view.totport(bal + cash), Title2=view.api_key(account.api_key))
Example #23
0
def positions():
    account = Account.api_authenticate(session['api_key'])
    if not account:
        return redirect(url_for('login'))
    positions = account.get_positions()
    if len(positions) == 0:
        return render_template('positions.html', Title=view.no_positions())
    else:
        bal = 0
        textlist = []
        for position in positions:
            ticker = position.ticker
            shares = position.shares
            px = util.get_price(ticker)
            bal += px * shares
            textlist.append(view.stockbal(shares, ticker, px * shares))
        totals = view.totbal(bal)
        return render_template('positions.html', Total=totals, Title=textlist)
Example #24
0
def sell(api_key):
    if not request.json or 'amount' not in request.json or 'ticker' not in request.json:
        return jsonify(BADREQUEST), 400
    account = Account.api_authenticate(api_key)
    if not account:
        return jsonify(UNAUTHORIZED), 401
    amount = request.json['amount']
    symbol = request.json['ticker']
    if int(amount) < 0:
        return jsonify(BADREQUEST), 400
    account.sell(symbol, int(amount))
    account.save()
    return jsonify({
        "username": account.username,
        "shares": amount,
        "ticker": symbol,
        "balance": account.balance
    })
Example #25
0
def sell():
    account = Account.api_authenticate(session['api_key'])
    if not account:
        return redirect(url_for('login'))
    else:
        if request.method == 'GET':
            return render_template('sell.html')
        else:
            ticker = request.form['tick_sell']
            shares = float(request.form['shareno_sell'])
            try:
                account.sell(ticker, shares)
                message = view.total_trades(1)
            except ConnectionError:
                return render_template('sell.html', error="Ticker not found please enter new valid ticker")
            except ValueError:
                return render_template('sell.html', error=view.insuf_funds())
            return render_template('sell.html', message=message)
Example #26
0
def sell(api_key):
    if not request.json or 'amount' not in request.json:
        return jsonify(BAD_REQUEST), 400
    if 'ticker' not in request.json:
        return jsonify(BAD_REQUEST), 400
    account = Account.api_authenticate(api_key)
    if not account:
        return jsonify(UNAUTHORIZED), 401
    amount = request.json['amount']
    if not isinstance(amount, int or float) or amount < 0:
        return jsonify(BAD_REQUEST), 400
    ticker = request.json['ticker']
    if not isinstance(ticker, str) or len(ticker) > 4:
        return jsonify(BAD_REQUEST), 400
    account.sell(ticker, amount)
    account.save()
    position = account.get_position_for(ticker)
    return jsonify({
        "username": account.username,
        "balance": account.balance,
        "position": position.json()
    })
Example #27
0
def get_positions(api_key):
    account = Account.api_authenticate(api_key)
    if account:
        res = Position.all_shares_accounts(account.pk)
        for pos in res:
            equ = pos[2]
            pk = pos[3]
            ticker = pos[0]
            number_shares = pos[1]
            equ = 0
            equ = get_price_of_ticker(ticker) * int(number_shares)
            New_positions = Position(pk, account.pk, ticker, number_shares,
                                     equ)
            New_positions.save()
        return jsonify({
            "Positions":
            account.get_my_positions(),
            "Positions_for_graph":
            New_positions.positions_for_graph(account.pk)
        })

    return jsonify({'error': 'invalid key'})
Example #28
0
def sell(api_key):
    data = request.get_json()
    account = Account.api_authenticate(api_key)
    if account:
        ticker = request.get_json()['ticker']
        amount = request.get_json()['amount']
        Withdrawal = request.get_json()['type']
        current_position = Position.from_account(account.pk, ticker)
        if current_position.num_shares < int(amount):
            return jsonify({"Insufficient_funds": "Insufficient_funds"})
        transaction_price = get_price_of_ticker(ticker) * int(amount)
        account.balance += (transaction_price)
        account.equity -= transaction_price
        current_position.equity -= (transaction_price)
        current_position.num_shares -= int(amount)
        current_position.save()
        time = data.get('unix_time')
        new_trade = Trade(account.pk, ticker, amount, current_position.equity,
                          Withdrawal, time)
        new_trade.equity = transaction_price
        new_trade.insert()
        account.save()
        return jsonify({"ticker": ticker, "amount": amount})
    return jsonify({'error': 'invalid key'})
Example #29
0
def buy(api_key):
    data = request.get_json()
    account = Account.api_authenticate(api_key)
    if account:
        ticker = request.get_json()['ticker']
        amount = request.get_json()['amount']
        Deposit = request.get_json()['type']
        current_price = get_price_of_ticker(ticker) * int(amount)
        if account.balance < current_price:
            return jsonify({"Insufficient_funds": "Insufficient_funds"})
        account.balance -= current_price
        account.equity += current_price
        current_position = Position.from_account(account.pk, ticker)
        current_position.equity += current_price
        current_position.number_shares += int(amount)
        current_position.save()
        time = data.get('unix_time')
        new_trade = Trade(account.pk, ticker, amount, current_position.equity,
                          Deposit, time)
        new_trade.equity = current_price
        new_trade.insert()
        account.save()
        return jsonify({"ticker": ticker, "amount": amount})
    return jsonify({'error': 'invalid key'})
Example #30
0
def balance(api_key):
    account = Account.api_authenticate(api_key)
    if not account:
        return jsonify(UNAUTHORIZED), 401
    return jsonify({"username": account.username, "balance": account.balance})