示例#1
0
def setup_g2a_verify(request, val):
   
    CachedKey = 'qr_' + str(request.user.id)
    cache = caching()
    Secret = cache.get(CachedKey, False)  

    if not Secret:
       return json_false500(request)
    
    if g2f.auth(Secret, val):
       
        Setting = None    
        SettingType = CustomSettings.objects.get(title = "g2a")
        try :
            Setting = UserCustomSettings.objects.get(user  = request.user, setting = SettingType ) 
        except UserCustomSettings.DoesNotExist: 
            Setting = UserCustomSettings(user  = request.user, 
                                         setting = SettingType, 
                                         value = SettingType.def_value )
            
        valid_image =  settings.ROOT_PATH + "qr_images/qr_%i.png" % (request.user.id)
        os.remove(valid_image) 
        Setting.value = Secret
        Setting.save()
        request.session['use_f2a'] = True
        return json_true(request) 
    else :
        return json_false500(request)     
示例#2
0
文件: api.py 项目: perldev/processing
def auth(Req):
    Nonce = Req.REQUEST.get("nonce", None)
    if Nonce is None:
        return json_false500(Req)

    (Sign, PublicKey) = (None, None)
    Sign = Req.META.get('HTTP_API_SIGN', None)

    if Sign is None:
        return json_false500(Req, {
            "description": "invalid_params",
            "key": "api_sign"
        })

    PublicKey = Req.META.get('HTTP_PUBLIC_KEY', None)
    if PublicKey is None:
        return json_false500(Req, {
            "description": "invalid_params",
            "key": "public_key"
        })

    try:
        Req.user = check_api_sign(PublicKey, Sign, Req.body)
        Cache = caching()
        Cache.set("nonce_" + PublicKey, int(Nonce), 50000)
        Nonce = Cache.get("nonce_" + PublicKey)
        return json_true(Req, {"nonce": Nonce, "public_key": PublicKey})
    except:
        return json_false500(Req, {"description": "auth_faild"})
示例#3
0
def setup_g2a_verify(request, val):
    CachedKey = 'qr_' + str(request.user.id)
    cache = caching()
    Secret = cache.get(CachedKey, False)

    if not Secret:
        return json_false500(request)

    if g2f.auth(Secret, val):

        Setting = None
        SettingType = CustomSettings.objects.get(title="g2a")
        try:
            Setting = UserCustomSettings.objects.get(user=request.user,
                                                     setting=SettingType)
        except UserCustomSettings.DoesNotExist:
            Setting = UserCustomSettings(user=request.user,
                                         setting=SettingType,
                                         value=SettingType.def_value)

        valid_image = settings.ROOT_PATH + "qr_images/qr_%i.png" % (
            request.user.id)
        os.remove(valid_image)
        Setting.value = Secret
        Setting.save()
        request.session['use_f2a'] = True
        return json_true(request)
    else:
        return json_false500(request)
示例#4
0
def login_f2a(request):
    key = request.REQUEST.get('key', None)
    password = request.REQUEST.get('password', None)
    cache = caching()
    UserIdCached = cache.get(key, False)
    if not UserIdCached:
        return json_false500(request)

    UserIdCachedInt = int(UserIdCached)
    Setting = UserCustomSettings.objects.get(user_id=UserIdCachedInt, setting__title="g2a")

    if auth(Setting.value, password):

        user = User.objects.get(id=UserIdCachedInt)
        user.backend = 'django.contrib.auth.backends.ModelBackend'
        login(request, user)
        request.result_auth = "good"
        request.session['auth_user_computered'] = True
        request.session['use_f2a'] = True
        request.session['user_id'] = user.id
        request.session['username'] = user.username
        request.session['email'] = user.email
        ComisObj = UserCustomSettings.objects.get(user_id=request.user.id, setting__title="deal_comission")
        DealComission = format_numbers4(Decimal(ComisObj.value) * Decimal("100"))
        request.session["deal_comission_show"] = DealComission
        request.session["deal_comission"] = format_numbers4(Decimal(ComisObj.value))

        notify_email(user, "auth_notify", request)

        return HttpResponse("good")

    else:
        return json_false500(request)
示例#5
0
文件: views.py 项目: kostyll/stock2
def login_f2a(request):
    key = request.REQUEST.get('key', None)
    password = request.REQUEST.get('password', None)
    cache = caching()
    UserIdCached = cache.get(key, False)
    if not UserIdCached:
        return json_false500(request)

    UserIdCachedInt = int(UserIdCached)
    Setting = UserCustomSettings.objects.get(user_id=UserIdCachedInt, setting__title="g2a")

    if auth(Setting.value, password):

        user = User.objects.get(id=UserIdCachedInt)
        user.backend = 'django.contrib.auth.backends.ModelBackend'
        login(request, user)
        request.result_auth = "good"
        request.session['auth_user_computered'] = True
        request.session['use_f2a'] = True
        request.session['user_id'] = user.id
        request.session['username'] = user.username
        request.session['email'] = user.email
        ComisObj = UserCustomSettings.objects.get(user_id=request.user.id, setting__title="deal_comission")
        DealComission = format_numbers4(Decimal(ComisObj.value) * Decimal("100"))
        request.session["deal_comission_show"] = DealComission
        request.session["deal_comission"] = format_numbers4(Decimal(ComisObj.value))

        notify_email(user, "auth_notify", request)

        return HttpResponse("good")

    else:
        return json_false500(request)
示例#6
0
def japan_stat(Req, Pair):
    Current = None
    try:
            Current = TradePairs.objects.get(url_title = Pair)
    except :
            return json_false500(Req)        
        
        
    List = StockStat.objects.raw("SELECT * FROM main_stockstat WHERE  main_stockstat.Stock_id=%i \
                                  ORDER BY id DESC LIMIT 48 " % (Current.id) )
    ListJson = []
    VolumeBase = 0
    VolumeTrade = 0
    for item in List:
          StartDate =  item.start_date  
          VolumeTrade = VolumeTrade + item.VolumeTrade
          VolumeBase = VolumeBase + item.VolumeBase
          Key = "%i:%i" % (StartDate.hour, StartDate.minute)
          ListJson.append([Key,  float(item.Start),  float(item.Max), float(item.Min), float(item.End), float(item.VolumeTrade) ])  
    
    OnlineUsersCount =  OnlineUsers.objects.count()
    ListJson.reverse()      
    
    Dict = {"trades":ListJson,
            "online": OnlineUsersCount,
            "volume_base": str(VolumeBase),
            "volume_trade": str(VolumeTrade)}
    
    RespJ = json.JSONEncoder().encode(Dict)
    return RespJ
示例#7
0
文件: api.py 项目: perldev/processing
def client_orders(Req, User_id, Title):
    Dict = {}

    Current = None
    try:
        Current = TradePairs.objects.get(url_title=Title)
    except:
        return json_false500(Req)

    Dict["auth"] = True
    MyOrders = Orders.objects.raw(
        "SELECT * FROM main_orders WHERE user_id=%i AND ( \
                                        (currency1_id=%i AND currency2_id=%i ) OR  \
                                        (currency2_id=%i AND currency1_id=%i )\
                                        ) AND status='processing' ORDER BY id DESC"
        % (
            User_id,
            Current.currency_from.id,
            Current.currency_on.id,
            Current.currency_from.id,
            Current.currency_on.id,
        ))

    MyOrdersList = []
    c = getcontext()
    c.prec = settings.TRANS_PREC

    for i in MyOrders:
        MyOrdersDict = {}
        MyOrdersDict["pub_date"] = formats.date_format(i.pub_date,
                                                       "DATETIME_FORMAT")
        MyOrdersDict["id"] = i.id
        MyOrdersDict["sum2"] = str(i.sum2)
        MyOrdersDict["sum1"] = str(i.sum1)

        if i.currency1 == Current.currency_on:
            MyOrdersDict["type"] = "sell"
            Number = i.sum2 / i.sum1
            MyOrdersDict["price"] = format_numbers10(i.price)
            MyOrdersDict["amnt_trade"] = format_numbers10(i.sum1)
            MyOrdersDict["amnt_base"] = format_numbers10(i.sum2)
        else:
            MyOrdersDict["type"] = "buy"
            Number = i.sum1 / i.sum2
            MyOrdersDict["price"] = format_numbers10(i.price)
            MyOrdersDict["amnt_base"] = format_numbers10(i.sum1)
            MyOrdersDict["amnt_trade"] = format_numbers10(i.sum2)
        MyOrdersList.append(MyOrdersDict)

    balance_sell = Accounts.objects.get(user_id=User_id,
                                        currency=Current.currency_on)
    balance_buy = Accounts.objects.get(user_id=User_id,
                                       currency=Current.currency_from)
    Dict["balance_buy"] = format_numbers_strong(balance_buy.balance)
    Dict["balance_sell"] = format_numbers_strong(balance_sell.balance)
    Dict["your_open_orders"] = MyOrdersList
    RespJ = json.JSONEncoder().encode(Dict)
    return RespJ
示例#8
0
文件: views.py 项目: kostyll/stock2
def login_f2a_operation(request):
    password = request.REQUEST.get('password', None)
    UserIdCachedInt = request.user.id
    Setting = UserCustomSettings.objects.get(user_id=UserIdCachedInt, setting__title="g2a")
    if auth(Setting.value, password):
        cache = caching()
        Key = "f2a_" + generate_key("fa_")
        cache.set(Key, UserIdCachedInt, 20)
        return HttpResponse(Key)
    return json_false500(request)
示例#9
0
def login_f2a_operation(request):
    password = request.REQUEST.get('password', None)
    UserIdCachedInt = request.user.id
    Setting = UserCustomSettings.objects.get(user_id=UserIdCachedInt, setting__title="g2a")
    if auth(Setting.value, password):
        cache = caching()
        Key = "f2a_" + generate_key("fa_")
        cache.set(Key, UserIdCachedInt, 20)
        return HttpResponse(Key)
    return json_false500(request)
示例#10
0
def client_orders(Req, User_id, Title ):
        Dict = {}
        
        Current = None
        try:
            Current = TradePairs.objects.get(url_title = Title)
        except :
            return json_false500(Req)
        
        
        Dict["auth"] = True     
        MyOrders = Orders.objects.raw("SELECT * FROM main_orders WHERE user_id=%i AND ( \
                                        (currency1_id=%i AND currency2_id=%i ) OR  \
                                        (currency2_id=%i AND currency1_id=%i )\
                                        ) AND status='processing' ORDER BY id DESC" %
                                        (User_id,
                                        Current.currency_from.id,
                                        Current.currency_on.id,
                                        Current.currency_from.id,
                                        Current.currency_on.id,
                                        )
                                        )
                                        
        MyOrdersList = []
        c = getcontext()
        c.prec = settings.TRANS_PREC
        
        for i in MyOrders:
                MyOrdersDict = {}
                MyOrdersDict["pub_date"] = formats.date_format(i.pub_date, "DATETIME_FORMAT")
                MyOrdersDict["id"] = i.id
                MyOrdersDict["sum2"] = str(i.sum2)
                MyOrdersDict["sum1"] = str(i.sum1)

                if i.currency1 == Current.currency_on :            
                        MyOrdersDict["type"] = "sell"
                        Number = i.sum2 / i.sum1
                        MyOrdersDict["price"] = format_numbers10(i.price)
                        MyOrdersDict["amnt_trade"] = format_numbers10(i.sum1)
                        MyOrdersDict["amnt_base"] = format_numbers10(i.sum2)
                else:
                        MyOrdersDict["type"] = "buy"
                        Number = i.sum1/ i.sum2
                        MyOrdersDict["price"] = format_numbers10(i.price)
                        MyOrdersDict["amnt_base"] = format_numbers10(i.sum1)
                        MyOrdersDict["amnt_trade"] = format_numbers10(i.sum2)
                MyOrdersList.append(MyOrdersDict)   
                
        balance_sell  =  Accounts.objects.get(user_id = User_id, currency =  Current.currency_on )        
        balance_buy  =  Accounts.objects.get(user_id = User_id, currency =  Current.currency_from )        
        Dict["balance_buy"] = format_numbers_strong(balance_buy.balance )
        Dict["balance_sell"] = format_numbers_strong(balance_sell.balance )
        Dict["your_open_orders"] = MyOrdersList
        RespJ = json.JSONEncoder().encode(Dict)
        return RespJ
示例#11
0
def sell_list(Req, Pair):              
        Current = None
        try:
            Current = TradePairs.objects.get(url_title = Pair)
        except :
            return json_false500(Req)
            
        SellList = Orders.objects.filter(status = "processing",
                                      currency1 = Current.currency_on,
                                      currency2 = Current.currency_from)
        getcontext().prec = 8
        Currency1Title = Current.currency_from.title
        Currency2Title = Current.currency_on.title
        AccumSellSum = 0
        GroupSellDict = {}
        for item in SellList :
             SellSum = item.sum1 ##LTC
             BuySum = item.sum2 ## UAH
             Rate = item.price
             AccumSellSum += SellSum
             if GroupSellDict.has_key(Rate) :
                GroupSellDict[Rate][Currency2Title] = GroupSellDict[Rate][Currency2Title] + SellSum
                GroupSellDict[Rate][Currency1Title] = GroupSellDict[Rate][Currency1Title] + BuySum
             else :
                GroupSellDict[Rate] = {Currency2Title: SellSum, Currency1Title: BuySum }
                
        ResSellList = [] 
        LL = GroupSellDict.keys()
        L = []
        for i in LL:
             Temp = Decimal(i)
             GroupSellDict[Temp] =  GroupSellDict[i]    
             L.append( Temp )   
             
        L.sort()
        
        Price  = 0
        MinPrice = 0
        for i in L:
                Price = format_numbers10(i)
                ResSellList.append( {"price":Price,
                                     "currency_trade":format_numbers10(GroupSellDict[i][Currency2Title]),
                                     "currency_base": format_numbers10(GroupSellDict[i][Currency1Title]) } )
                
        if len(ResSellList):
                MinPrice = ResSellList[0]["price"]    
    
        Dict = {"orders_sum":format_numbers10(AccumSellSum), 
                "list":ResSellList,
                "min_price": MinPrice, 
                "max_price": Price }
        RespJ = json.JSONEncoder().encode(Dict)
        
        return RespJ
示例#12
0
def buy_list(Req, Pair):
        Current = None
        try:
            Current = TradePairs.objects.get(url_title = Pair)
        except :
            return json_false500(Req)
        
        
        
        BuyList =  Orders.objects.filter(status = "processing",
                                        currency1 = Current.currency_from,
                                        currency2 = Current.currency_on)
        getcontext().prec = settings.TRANS_PREC
        Currency1Title = Current.currency_from.title
        Currency2Title = Current.currency_on.title
        List1 = {}
        AccumBuySum = 0
        for item in BuyList : 
                SellSum = item.sum1 ## UAH
                BuySum = item.sum2  ## LTC
                Rate = item.price
                AccumBuySum += SellSum
                if List1.has_key(Rate) :
                        List1[Rate][Currency1Title] = List1[Rate][Currency1Title] + SellSum
                        List1[Rate][Currency2Title] = List1[Rate][Currency2Title] + BuySum
                else :
                        List1[Rate] = {Currency1Title: SellSum, Currency2Title: BuySum }
        
        ResBuyList = []
        
        LL = List1.keys()
        L = []
        for i in LL:
             Temp = Decimal(i)
             List1[Temp] =  List1[i]    
             L.append( Temp )   
             
        L.sort()
        L.reverse()
        
        Price  = 0
        MaxPrice  = 0
        for i in  L :
                Price = format_numbers10(i)
                ResBuyList.append( {"price":Price, 
                                    "currency_trade": format_numbers10(List1[i][Currency2Title]),
                                    "currency_base": format_numbers10(List1[i][Currency1Title]) } )    

        if len(ResBuyList):
                MaxPrice = ResBuyList[0]["price"]
        Dict = {"orders_sum":format_numbers10(AccumBuySum), "list":ResBuyList,
                 "max_price":MaxPrice, "min_price": Price }
        RespJ =  json.JSONEncoder().encode(Dict)
        return RespJ
示例#13
0
文件: profile.py 项目: kostyll/stock2
def g2a_qr(request):
    key = request.REQUEST.get('key')
    cache = caching()
    Secret = cache.get("temp_qr" + key, False)
    if not Secret:
        return json_false500(request)

    valid_image = settings.ROOT_PATH + "qr_images/qr_%i.png" % (Secret)
    with open(valid_image, "rb") as f:
        Response = HttpResponse(f.read(), mimetype="image/png")
        Response['Cache-Control'] = 'max-age=0'
        return Response
示例#14
0
def g2a_qr(request):
    key = request.REQUEST.get('key')
    cache = caching()
    Secret = cache.get("temp_qr" + key, False)
    if not Secret:
        return json_false500(request)

    valid_image = settings.ROOT_PATH + "qr_images/qr_%i.png" % (Secret)
    with open(valid_image, "rb") as f:
        Response = HttpResponse(f.read(), mimetype="image/png")
        Response['Cache-Control'] = 'max-age=0'
        return Response
示例#15
0
文件: profile.py 项目: kostyll/stock2
def private_key(Req):
    Use2fa = False
    if Req.session.has_key("use_f2a"):
        Use2fa = Req.session["use_f2a"]

    if not Use2fa:
        Form = PinForm(Req.POST, user=Req.user)
        if Form.is_valid():
            return user_private_key(Req)
        else:
            return json_false500(Req)
    else:
        return user_private_key(Req)
示例#16
0
def private_key(Req):
    Use2fa = False
    if Req.session.has_key("use_f2a"):
        Use2fa = Req.session["use_f2a"]

    if not Use2fa:
        Form = PinForm(Req.POST, user=Req.user)
        if Form.is_valid():
            return user_private_key(Req)
        else:
            return json_false500(Req)
    else:
        return user_private_key(Req)
示例#17
0
def common_secure_confirm(Req):
    Use2fa = False
    if Req.session.has_key("use_f2a"):
        Use2fa = Req.session["use_f2a"]

    if not Use2fa:
        Form = PinForm(Req.REQUEST, user=Req.user)

        if Form.is_valid():
            return call_custom_function(Req, Form.fields["pin"].value)
        else:
            return json_false500(Req)
    else:
        return call_custom_function(Req)
示例#18
0
文件: finance.py 项目: kostyll/stock2
def common_secure_confirm(Req):
    Use2fa = False
    if Req.session.has_key("use_f2a"):
        Use2fa = Req.session["use_f2a"]

    if not Use2fa:
        Form = PinForm(Req.REQUEST, user=Req.user)

        if Form.is_valid():
            return call_custom_function(Req, Form.fields["pin"].value)
        else:
            return json_false500(Req)
    else:
        return call_custom_function(Req)
示例#19
0
def auth(Req):   
    Nonce = Req.REQUEST.get("nonce", None)
    if Nonce is None :
        return json_false500(Req)
    
    (Sign, PublicKey) = (None, None)
    Sign = Req.META.get('HTTP_API_SIGN', None)
    if Sign is None:
        return json_false500(Req, {"description":"invalid_params", "key": "api_sign"} )
        
    
    PublicKey = Req.META.get('HTTP_PUBLIC_KEY', None)
    if PublicKey is None:
        return json_false500(Req, {"description":"invalid_params","key": "public_key"} )

    try :
        Req.user = check_api_sign(PublicKey, Sign, Req.body )
        Cache = caching()
        Cache.set("nonce_" + PublicKey, int(Nonce), 50000)    
        Nonce = Cache.get("nonce_" + PublicKey)
        return json_true(Req, {"nonce": Nonce,"public_key": PublicKey})
    except:
        return json_false500(Req,{"description":"auth_faild"})
示例#20
0
def call_custom_function(Req, PrePrivateKey):
    Avalible = {
        "confirm_withdraw_bank": confirm_withdraw_bank,
        "confirm_withdraw_currency": confirm_withdraw_currency,
        "confirm_withdraw_liqpay": confirm_withdraw_liqpay,
        "confirm_withdraw_p2p": confirm_withdraw_p2p,
        "confirm_withdraw_emoney": confirm_withdraw_emoney,
    }
    # try:
    Type = Req.REQUEST.get("key_type")
    HttpRefferer = Req.META["HTTP_REFERER"]
    D = HttpRefferer.split("/")
    Key = D[-1:][0]
    if HttpRefferer.find(settings.BASE_HOST) == -1:
        return json_false500(Req)

    return Avalible[Type](Req, Key, PrePrivateKey)
示例#21
0
def call_custom_function(Req, PrePrivateKey):
    Avalible = {
        "confirm_withdraw_bank": confirm_withdraw_bank,
        "confirm_withdraw_currency": confirm_withdraw_currency,
        "confirm_withdraw_liqpay": confirm_withdraw_liqpay,
        "confirm_withdraw_p2p": confirm_withdraw_p2p,
        "confirm_withdraw_emoney": confirm_withdraw_emoney

    }
    #try:
    Type = Req.REQUEST.get("key_type")
    HttpRefferer = Req.META['HTTP_REFERER']
    D = HttpRefferer.split("/")
    Key = D[-1:][0]
    if HttpRefferer.find(settings.BASE_HOST) == -1:
        return json_false500(Req)

    return Avalible[Type](Req, Key, PrePrivateKey)
    #except :
    #return json_false500(Req)

#def liqpay_deposit(Req):

#if not Req.user.is_authenticated():
#Response =   HttpResponse('{"status":"auth_error"}')
#Response['Content-Type'] = 'application/json'
#return Response
#else:
#Amnt  = Decimal( Req.REQUEST.get("amnt") )
#CurrencyOn = int( Req.REQUEST.get("currency") )
#Account = Accounts.objects.get(currency = CurrencyOn, user = Req.user )
#Account = Accounts.objects.get(currency = CurrencyOn, user_id = settings.aquiring_user )
                
               
                
                
                       
        
        
        
示例#22
0
文件: api.py 项目: perldev/processing
def japan_stat(Req, Pair):
    Current = None
    try:
        Current = TradePairs.objects.get(url_title=Pair)
    except:
        return json_false500(Req)

    List = StockStat.objects.raw(
        "SELECT * FROM main_stockstat WHERE  main_stockstat.Stock_id=%i \
                                  ORDER BY id DESC LIMIT 48 " % (Current.id))
    ListJson = []
    VolumeBase = 0
    VolumeTrade = 0
    for item in List:
        StartDate = item.start_date
        VolumeTrade = VolumeTrade + item.VolumeTrade
        VolumeBase = VolumeBase + item.VolumeBase
        Key = "%i:%i" % (StartDate.hour, StartDate.minute)
        ListJson.append([
            Key,
            float(item.Start),
            float(item.Max),
            float(item.Min),
            float(item.End),
            float(item.VolumeTrade)
        ])

    OnlineUsersCount = OnlineUsers.objects.count()
    ListJson.reverse()

    Dict = {
        "trades": ListJson,
        "online": OnlineUsersCount,
        "volume_base": str(VolumeBase),
        "volume_trade": str(VolumeTrade)
    }

    RespJ = json.JSONEncoder().encode(Dict)
    return RespJ
示例#23
0
文件: api.py 项目: perldev/processing
def sell_list(Req, Pair):
    Current = None
    try:
        Current = TradePairs.objects.get(url_title=Pair)
    except:
        return json_false500(Req)

    SellList = Orders.objects.filter(status="processing",
                                     currency1=Current.currency_on,
                                     currency2=Current.currency_from)
    getcontext().prec = 8
    Currency1Title = Current.currency_from.title
    Currency2Title = Current.currency_on.title
    AccumSellSum = 0
    GroupSellDict = {}
    for item in SellList:
        SellSum = item.sum1  ##LTC
        BuySum = item.sum2  ## UAH
        Rate = item.price
        AccumSellSum += SellSum
        if GroupSellDict.has_key(Rate):
            GroupSellDict[Rate][
                Currency2Title] = GroupSellDict[Rate][Currency2Title] + SellSum
            GroupSellDict[Rate][
                Currency1Title] = GroupSellDict[Rate][Currency1Title] + BuySum
        else:
            GroupSellDict[Rate] = {
                Currency2Title: SellSum,
                Currency1Title: BuySum
            }

    ResSellList = []
    LL = GroupSellDict.keys()
    L = []
    for i in LL:
        Temp = Decimal(i)
        GroupSellDict[Temp] = GroupSellDict[i]
        L.append(Temp)

    L.sort()

    Price = 0
    MinPrice = 0
    for i in L:
        Price = format_numbers10(i)
        ResSellList.append({
            "price":
            Price,
            "currency_trade":
            format_numbers10(GroupSellDict[i][Currency2Title]),
            "currency_base":
            format_numbers10(GroupSellDict[i][Currency1Title])
        })

    if len(ResSellList):
        MinPrice = ResSellList[0]["price"]

    Dict = {
        "orders_sum": format_numbers10(AccumSellSum),
        "list": ResSellList,
        "min_price": MinPrice,
        "max_price": Price
    }
    RespJ = json.JSONEncoder().encode(Dict)

    return RespJ
示例#24
0
文件: api.py 项目: perldev/processing
def buy_list(Req, Pair):
    Current = None
    try:
        Current = TradePairs.objects.get(url_title=Pair)
    except:
        return json_false500(Req)

    BuyList = Orders.objects.filter(status="processing",
                                    currency1=Current.currency_from,
                                    currency2=Current.currency_on)
    getcontext().prec = settings.TRANS_PREC
    Currency1Title = Current.currency_from.title
    Currency2Title = Current.currency_on.title
    List1 = {}
    AccumBuySum = 0
    for item in BuyList:
        SellSum = item.sum1  ## UAH
        BuySum = item.sum2  ## LTC
        Rate = item.price
        AccumBuySum += SellSum
        if List1.has_key(Rate):
            List1[Rate][Currency1Title] = List1[Rate][Currency1Title] + SellSum
            List1[Rate][Currency2Title] = List1[Rate][Currency2Title] + BuySum
        else:
            List1[Rate] = {Currency1Title: SellSum, Currency2Title: BuySum}

    ResBuyList = []

    LL = List1.keys()
    L = []
    for i in LL:
        Temp = Decimal(i)
        List1[Temp] = List1[i]
        L.append(Temp)

    L.sort()
    L.reverse()

    Price = 0
    MaxPrice = 0
    for i in L:
        Price = format_numbers10(i)
        ResBuyList.append({
            "price":
            Price,
            "currency_trade":
            format_numbers10(List1[i][Currency2Title]),
            "currency_base":
            format_numbers10(List1[i][Currency1Title])
        })

    if len(ResBuyList):
        MaxPrice = ResBuyList[0]["price"]
    Dict = {
        "orders_sum": format_numbers10(AccumBuySum),
        "list": ResBuyList,
        "max_price": MaxPrice,
        "min_price": Price
    }
    RespJ = json.JSONEncoder().encode(Dict)
    return RespJ