Exemple #1
0
def transactions_buy(request):
    stock_id = request.POST.get('buy_stock_id')
    stock_count = request.POST.get('buy_stock_count')
    stock_price = request.POST.get('buy_stock_price')
    print(stock_id, stock_count, stock_price)

    try:
        nonce = web3.eth.getTransactionCount(
            web3.toChecksumAddress(request.session.get('address')))
        txn_dict = action.functions.buy(
            int(stock_id), int(stock_count),
            int(stock_price)).buildTransaction({
                'value':
                int(stock_price) * int(stock_count) * 10**18,
                'nonce':
                nonce,
                "from":
                web3.toChecksumAddress(request.session.get('address')),
            })
        signed_txn = web3.eth.account.signTransaction(
            txn_dict, private_key=request.session.get('private_key'))
        result_hash = web3.eth.sendRawTransaction(signed_txn.rawTransaction)
    except Exception as tips:
        print(tips)
        return JsonResponse({'status': 0})
    return JsonResponse({'status': 1})
Exemple #2
0
def sell(request):
    """买入队列 抛出逻辑"""
    buy_index = request.GET.get('buys_index')
    buys = [json.loads(i) for i in red.lrange('buys', 0, -1)]
    print('index.sell()', buy_index, buys)
    for i in buys:
        if i.get('buys_index') == int(buy_index):
            stock_id = i.get('stock_id')
            stock_count = i.get('stock_count')
            stock_price = i.get('stock_price')
    try:
        nonce = web3.eth.getTransactionCount(
            web3.toChecksumAddress(request.session.get('address')))
        txn_dict = action.functions.sell(
            int(stock_id), int(stock_count),
            int(stock_price)).buildTransaction({
                'nonce':
                nonce,
                "from":
                web3.toChecksumAddress(request.session.get('address')),
            })
        signed_txn = web3.eth.account.signTransaction(
            txn_dict, private_key=request.session.get('private_key'))
        result_hash = web3.eth.sendRawTransaction(signed_txn.rawTransaction)
    except Exception as tips:
        print(tips)
        return JsonResponse({'status': 0})
    return JsonResponse({'status': 1})
Exemple #3
0
def sell(request):
    """
    抛售股票的逻辑
    """
    stock_id = request.POST.get('sell_stock_id')
    stock_count = request.POST.get('sell_stock_count')
    stock_price = request.POST.get('sell_stock_price')
    print(stock_id, stock_count, stock_price)

    try:
        nonce = web3.eth.getTransactionCount(
            web3.toChecksumAddress(request.session.get('address')))
        txn_dict = action.functions.sell(
            int(stock_id), int(stock_count),
            int(stock_price)).buildTransaction({
                'nonce':
                nonce,
                "from":
                web3.toChecksumAddress(request.session.get('address')),
            })
        signed_txn = web3.eth.account.signTransaction(
            txn_dict, private_key=request.session.get('private_key'))
        result_hash = web3.eth.sendRawTransaction(signed_txn.rawTransaction)
    except Exception as tips:
        print(tips)
        return JsonResponse({'status': 0})

    address = request.session.get('address')
    balance = web3.fromWei(web3.eth.getBalance(address, 'latest'), 'ether')
    return JsonResponse({'status': 1, 'balance': str(balance)})
Exemple #4
0
def get_list(request):
    """
    获取jqgrid的信息:用户所持股票的详情信息
    """
    address = request.session.get('address')
    private_key = request.session.get('private_key')
    data = []
    print(address)
    nonce = web3.eth.getTransactionCount(web3.toChecksumAddress(address))
    txn_dict = action.functions.get_stockers_all_stocks(
        web3.toChecksumAddress(address)).buildTransaction({
            'nonce':
            nonce,
            "from":
            web3.toChecksumAddress(address),
        })
    signed_txn = web3.eth.account.signTransaction(txn_dict,
                                                  private_key=private_key)
    result_hash = web3.eth.sendRawTransaction(signed_txn.rawTransaction)
    id_count = action.functions.get_id_counts().call()
    stocks = list(zip(id_count[0], id_count[1]))
    print(stocks)
    for i in stocks:
        company_name = IPO.objects.get(stock_id=str(i[0])).company_name
        data.append({
            'stock_id': i[0],
            'company_name': company_name,
            'stock_count': i[1],
            'status': '持有'
        })

    rows = request.GET.get('rows', 4)
    page = request.GET.get('page', 1)
    paginator = Paginator(data, int(rows))
    try:
        rows = list(paginator.page(page).object_list)
    except Exception as tips:
        print(tips)
        rows = list(paginator.page(int(page) - 1).object_list)
        page = int(page) - 1

    page_data = {
        'page': page,
        'total': paginator.num_pages,
        'records': paginator.count,
        'rows': rows
    }
    return JsonResponse(page_data, safe=False)
Exemple #5
0
def ipo_submit(request):
    company_name = request.POST.get('company_name')
    ipo_price = request.POST.get('ipo_price')
    ipo_count = request.POST.get('ipo_count')
    print(company_name, ipo_count, ipo_price)
    try:
        with transaction.atomic():
            ipo = IPO.objects.create(company_name=company_name, ipo_price=ipo_price, ipo_count=ipo_count)

        nonce = web3.eth.getTransactionCount(web3.toChecksumAddress(request.session.get('address')))
        txn_dict = action.functions.add_ipo(int(ipo.stock_id), int(ipo.ipo_count), int(ipo.ipo_price)).buildTransaction(
            {
                'nonce': nonce,
                "from": web3.toChecksumAddress(request.session.get('address')),
            })
        signed_txn = web3.eth.account.signTransaction(txn_dict,
                                                      private_key=request.session.get('private_key'))
        result_hash = web3.eth.sendRawTransaction(signed_txn.rawTransaction)

    except Exception as tips:
        print(tips)
        return JsonResponse({'status': 0})
    return JsonResponse({'status': 1})