Exemplo n.º 1
0
def sell_stock(request, **kwargs):
    """
    卖出股票
    """
    from decimal import *
    import datetime 
    UserBasic = kwargs.pop("Mem")
    extra_context = kwargs.pop("error_detail")
    print extra_context,'bbbbb'
    if not extra_context:
        template_name = "stock/sell_stock.html"
        amount = 0
        if request.method =="POST":
            today = datetime.datetime.now()
            cursor = connection.cursor()
            prevDate = today + datetime.timedelta(days=1)
            sql_str = "SELECT * FROM rtyk_triple.stock_selling_poll where time >='%s' and time<'%s' and user_from_id=%s"%(today.strftime('%Y-%m-%d'),prevDate.strftime('%Y-%m-%d'),UserBasic.id)
            cursor.execute(sql_str)
            HasSellingStock = cursor.fetchall()
            SellingPoll = selling_poll(user_from = UserBasic)
            form = StockForm(request.POST,user=request.user, instance = SellingPoll)
            if form.is_valid():
                seller_id = UserBasic.id
                user_to = form.cleaned_data['n_seller'].strip().upper()
                value = Decimal(form.cleaned_data['value'])
    #            value = Decimal(stock_value)
                amount = form.cleaned_data['amount']
                if not HasSellingStock:
                    if not user_to and amount>2000:
                        extra_context = "每次出售股票不能大于2000股"
                        return HttpResponse(json.dumps(extra_context),mimetype="application/json")
                    else:
                        if not user_to:
                            to_user_id = None
                        else:   
                            if user_to == UserBasic.number:
                                extra_context = "你不能向自己出售股票"
                                return HttpResponse(json.dumps(extra_context),mimetype="application/json")
                            amount = int(request.POST.get("direct_sell_amount"))
                            
                            to_user = user_basic.objects.filter(number = user_to)[0]
                            extra_context = UserBasic.number+"向你定向售出"+str(amount)+"股,"+"单价"+str(value)+"元,"+"总价"+str(amount*value)+"元."
    #                        notification.send(to_user.user, "stock_sold_notice",extra_context,True, request.user)
                            to_user_id = to_user.id
                            
                        if amount<=(UserBasic.stock_hold_0devide+UserBasic.stock_hold_1devide+UserBasic.stock_hold_2devide):
                            extra_context = "你成功售出"+str(amount)+"股,单价"+str(value)+"元,总价"+str(amount*value)+"元."
        #                    url = reverse("stock_index")+"?message="+extra_context
                            call_proc = CallProc()
                            call_proc.CallProcFuc_4("stock_sell",seller_id,value,amount,to_user_id)
                        else:
                            extra_context = "你的股票余额不足"
                        result = "结算成功"
                        result = "结算失败"
                else:
                    extra_context = "每天只能出售一次股票"
            else:
                extra_context = form.errors.items()[0][1]

    return HttpResponse(json.dumps(extra_context),mimetype="application/json")
Exemplo n.º 2
0
def buy_stock(request,**kwargs):
    """
    购买股票
    """
    
    extra_context = kwargs.pop("error_detail")
    if not extra_context:
        lock = threading.Lock()
        UserBasic = kwargs.pop('Mem')
        buy_amount = 0
        if request.method == "POST": 
            form = StockForm(request.POST,user = request.user)
            if form.is_valid():
                seller_number = form.cleaned_data['n_seller']
                amount = form.cleaned_data['amount']
                _value = Decimal(form.cleaned_data['value'])
                total_money = UserBasic.cash + UserBasic.stock_repeat + UserBasic.stock_rebuy
                
                if total_money< (amount * _value):
                    extra_context = "没有足够的余额"
                else:
                    if not seller_number:
                        Stocks = selling_poll.objects.filter(value__lte = _value).exclude(user_from = UserBasic).order_by('value')

                    else:
                        seller = user_basic.objects.filter(number = seller_number)[0]
                        Stocks = selling_poll.objects.filter(value__lte = _value, user_from = seller).order_by('value')
                    lock.acquire()
        #            try:
                    
                    buy_amount = buy(request,Stocks,amount,UserBasic.id)
                    if buy_amount == 0:
                        extra_context = "购买失败,没有符合你要求的股票"
                    else:
                        extra_context = "你成功买入了"+str(buy_amount)+"股"
        #            finally:
                    lock.release()    
            else:
                extra_context = "二级密码错误"
    return HttpResponse(json.dumps(extra_context),mimetype="application/json")