def createBid(request, *args, **kwargs): if kwargs.get('pk'): initParam = {} app = get_object_or_404(appModels.App, pk=kwargs.get('pk')) initParam['app'] = app initParam['appInfo'] = app.appinfo initBidInfo(request, app=app, initParam=initParam)#For below code using the value #Do something, when the time is app end date. if app.status == 2 and initParam['begin_bid']: initParam['is_callback'] = True if request.method == "POST": biddingForm = forms.BiddingForm(request.POST) #Buyer credit point judge for bidding. min_cp = common.getSystemParam(key='min_cp_for_bid', default=50) cp = creditViews.getUserCreditPoint(user=request.user) if cp == -1 or cp < string.atoi(min_cp): initParam['biddingForm'] = biddingForm initParam['bid_error'] = _('You are not allowed to place bid, because your low credit points. But you can buy additional credit points.') else: if biddingForm.is_valid(): #From bid_create.html if 'yes' == request.POST.get('bid_create'): bid = biddingForm.save(commit=False) if datetime.datetime.now() > app.end_date: initParam['biddingForm'] = biddingForm initParam['bid_error'] = _('The bidding is closed, you can not bid.') elif bid.price >= initParam.get('bid_price'): bid.app = app bid.buyer = request.user bid.status = 1 # userPrivateItem = userSettingModels.UserPrivateItem.objects.filter(key='is_bid_approved') # if userPrivateItem: # is_bid_approved = userSettingModels.UserPrivateSetting.objects.filter(user_id=app.publisher.id, user_private_item_id=userPrivateItem[0]) # #Need be verified by app publisher. # if is_bid_approved and is_bid_approved[0].value == 'True': # bid.status = 3 bid.save() #Send the message to app publisher send_message = request.POST.get('send_message') if send_message and send_message == 'yes': if sendMessage(request, initParam=initParam): notificationViews.sendNewBidEmail(request, bid=bid, app=app) return redirect(reverse('bid:bid_list', kwargs={'pk': app.id})) else: initParam['biddingForm'] = biddingForm initParam['bid_error'] = initParam['message_error'] else: notificationViews.sendNewBidEmail(request, bid=bid, app=app) return redirect(reverse('bid:bid_list', kwargs={'pk': app.id})) else: initParam['biddingForm'] = biddingForm initParam['bid_error'] = _('The new bid has been submitted.') #From list_detail.html else: initParam['biddingForm'] = biddingForm initParam['sender'] = request.user initParam['receiver'] = app.publisher transactions = txnModels.Transaction.objects.filter(app_id=app.id).exclude(status=1) if transactions: initParam['transaction'] = transactions[0] #Comment the message # sendMessage(request, initParam=initParam) queryViews.shareSocial(request, initParam=initParam, app=app) return render_to_response('bid/bid_create.html', initParam, context_instance=RequestContext(request)) raise Http404
def createBid(request, *args, **kwargs): if kwargs.get('pk'): initParam = {} app = get_object_or_404(appModels.App, pk=kwargs.get('pk')) initParam['app'] = app initParam['appInfo'] = app.appinfo initBidInfo(request, app=app, initParam=initParam) #For below code using the value #Do something, when the time is app end date. if app.status == 2 and initParam['begin_bid']: initParam['is_callback'] = True if request.method == "POST": biddingForm = forms.BiddingForm(request.POST) #Buyer credit point judge for bidding. min_cp = common.getSystemParam(key='min_cp_for_bid', default=50) cp = creditViews.getUserCreditPoint(user=request.user) if cp == -1 or cp < string.atoi(min_cp): initParam['biddingForm'] = biddingForm initParam['bid_error'] = _( 'You are not allowed to place bid, because your low credit points. But you can buy additional credit points.' ) else: if biddingForm.is_valid(): #From bid_create.html if 'yes' == request.POST.get('bid_create'): bid = biddingForm.save(commit=False) if datetime.datetime.now() > app.end_date: initParam['biddingForm'] = biddingForm initParam['bid_error'] = _( 'The bidding is closed, you can not bid.') elif bid.price >= initParam.get('bid_price'): bid.app = app bid.buyer = request.user bid.status = 1 # userPrivateItem = userSettingModels.UserPrivateItem.objects.filter(key='is_bid_approved') # if userPrivateItem: # is_bid_approved = userSettingModels.UserPrivateSetting.objects.filter(user_id=app.publisher.id, user_private_item_id=userPrivateItem[0]) # #Need be verified by app publisher. # if is_bid_approved and is_bid_approved[0].value == 'True': # bid.status = 3 bid.save() #Send the message to app publisher send_message = request.POST.get('send_message') if send_message and send_message == 'yes': if sendMessage(request, initParam=initParam): notificationViews.sendNewBidEmail(request, bid=bid, app=app) return redirect( reverse('bid:bid_list', kwargs={'pk': app.id})) else: initParam['biddingForm'] = biddingForm initParam['bid_error'] = initParam[ 'message_error'] else: notificationViews.sendNewBidEmail(request, bid=bid, app=app) return redirect( reverse('bid:bid_list', kwargs={'pk': app.id})) else: initParam['biddingForm'] = biddingForm initParam['bid_error'] = _( 'The new bid has been submitted.') #From list_detail.html else: initParam['biddingForm'] = biddingForm initParam['sender'] = request.user initParam['receiver'] = app.publisher transactions = txnModels.Transaction.objects.filter( app_id=app.id).exclude(status=1) if transactions: initParam['transaction'] = transactions[0] #Comment the message # sendMessage(request, initParam=initParam) queryViews.shareSocial(request, initParam=initParam, app=app) return render_to_response('bid/bid_create.html', initParam, context_instance=RequestContext(request)) raise Http404
def onePriceBuy(request, *args, **kwargs): """ Buyer pay by clicking button 'Buy It Now with 10 USD' in app detail page. Note: url include app_id, and publisher_id, because of preventing user to cheat. """ initParam = {} app_id = kwargs.get('app_id') publisher_id = kwargs.get('publisher_id') app = get_object_or_404(appModels.App, pk=app_id, publisher_id=publisher_id, status=2) transactions = models.Transaction.objects.filter(app_id=app.id, seller_id=publisher_id, buyer_id=request.user.id, status=1) if transactions: transaction = transactions[0] else: transaction = models.Transaction() transaction.app = app transaction.seller = app.publisher transaction.status = 1 transaction.is_active = False transaction.buyer = request.user transaction.price = app.one_price transaction.buy_type = 1 paid_expiry_date = string.atoi( common.getSystemParam(key='paid_expiry_date', default=7)) transaction.end_time = datetime.datetime.now() + datetime.timedelta( days=paid_expiry_date) transaction.save() #Log transaction transactionsLog = models.TransactionLog() transactionsLog.transaction = transaction transactionsLog.app = transaction.app transactionsLog.status = transaction.status transactionsLog.buyer = transaction.buyer transactionsLog.price = transaction.price transactionsLog.buy_type = transaction.buy_type transactionsLog.save() initParam['transaction'] = transaction initParam['page_source'] = 'one-price' if transaction.end_time > datetime.datetime.now(): initParam['time_remaining'] = time.mktime( time.strptime(transaction.end_time.strftime('%Y-%m-%d %H:%M:%S'), '%Y-%m-%d %H:%M:%S')) else: initParam['time_remaining'] = "Deal Closed" initParam['paid_expiry'] = True if request.method == 'POST': #Buyer credit point judge for bidding. min_cp = common.getSystemParam(key='min_cp_for_bid', default=50) cp = creditViews.getUserCreditPoint(user=request.user) if cp == -1 or cp < string.atoi(min_cp): initParam['error_msg'] = _( 'You are not allowed to buy, because your credit points is too low.' ) else: #Buyser pay for app. txn_fee_pct = string.atof( common.getSystemParam(key='txn_fee_pct', default=0.01)) initParam['currency'] = app.currency.currency initParam['appsWalk_account'] = settings.APPSWALK_ACCOUNT initParam['gateway'] = 'paypal' gateways = paymentModels.Gateway.objects.filter( name__iexact=initParam.get('gateway')) acceptGateways = paymentModels.AcceptGateway.objects.filter( user_id=transaction.seller.id, type_id=gateways[0].id, is_active=True) initParam['seller_account'] = acceptGateways[0].value initParam['appsWalk_amount'] = app.one_price * txn_fee_pct initParam['seller_amount'] = app.one_price * (1 - txn_fee_pct) initParam['txn_id'] = transaction.id #The needed operation method in pay. initParam['executeMethod'] = updateTransaction #The back page, when pay has error. if request.session.get('back_page', None): del request.session['back_page'] if request.session.get('back_page_msg', None): del request.session['back_page_msg'] request.session['back_page'] = '/'.join([ common.getHttpHeader(request), 'query/app-detail', str(app.id) ]) request.session['back_page_msg'] = 'App Detail' #The success return page, when pay finish. if request.session.get('success_page', None): del request.session['success_page'] if request.session.get('success_page_msg', None): del request.session['success_page_msg'] request.session['success_page'] = '/'.join([ common.getHttpHeader(request), 'transaction/trade-action/buy', str(app.id), str(request.user.id) ]) request.session['success_page_msg'] = 'Trade Action' return paymentViews.pay(request, initParam=initParam) return render_to_response('transaction/one_price_buy.html', initParam, context_instance=RequestContext(request))
def onePriceBuy(request, *args, **kwargs): """ Buyer pay by clicking button 'Buy It Now with 10 USD' in app detail page. Note: url include app_id, and publisher_id, because of preventing user to cheat. """ initParam = {} app_id = kwargs.get('app_id') publisher_id = kwargs.get('publisher_id') app = get_object_or_404(appModels.App, pk=app_id, publisher_id=publisher_id, status=2) transactions = models.Transaction.objects.filter(app_id=app.id, seller_id=publisher_id, buyer_id=request.user.id, status=1) if transactions: transaction = transactions[0] else: transaction = models.Transaction() transaction.app = app transaction.seller = app.publisher transaction.status = 1 transaction.is_active = False transaction.buyer = request.user transaction.price = app.one_price transaction.buy_type = 1 paid_expiry_date = string.atoi(common.getSystemParam(key='paid_expiry_date', default=7)) transaction.end_time = datetime.datetime.now() + datetime.timedelta(days=paid_expiry_date) transaction.save() #Log transaction transactionsLog = models.TransactionLog() transactionsLog.transaction = transaction transactionsLog.app = transaction.app transactionsLog.status = transaction.status transactionsLog.buyer = transaction.buyer transactionsLog.price = transaction.price transactionsLog.buy_type = transaction.buy_type transactionsLog.save() initParam['transaction'] = transaction initParam['page_source'] = 'one-price' if transaction.end_time > datetime.datetime.now(): initParam['time_remaining'] = time.mktime(time.strptime(transaction.end_time.strftime('%Y-%m-%d %H:%M:%S'), '%Y-%m-%d %H:%M:%S')) else: initParam['time_remaining'] = "Deal Closed" initParam['paid_expiry'] = True if request.method == 'POST': #Buyer credit point judge for bidding. min_cp = common.getSystemParam(key='min_cp_for_bid', default=50) cp = creditViews.getUserCreditPoint(user=request.user) if cp == -1 or cp < string.atoi(min_cp): initParam['error_msg'] = _('You are not allowed to buy, because your credit points is too low.') else: #Buyser pay for app. txn_fee_pct = string.atof(common.getSystemParam(key='txn_fee_pct', default=0.01)) initParam['currency'] = app.currency.currency initParam['appsWalk_account'] = settings.APPSWALK_ACCOUNT initParam['gateway'] = 'paypal' gateways = paymentModels.Gateway.objects.filter(name__iexact=initParam.get('gateway')) acceptGateways = paymentModels.AcceptGateway.objects.filter(user_id=transaction.seller.id, type_id=gateways[0].id, is_active=True) initParam['seller_account'] = acceptGateways[0].value initParam['appsWalk_amount'] = app.one_price * txn_fee_pct initParam['seller_amount'] = app.one_price * (1 - txn_fee_pct) initParam['txn_id'] = transaction.id #The needed operation method in pay. initParam['executeMethod'] = updateTransaction #The back page, when pay has error. if request.session.get('back_page', None): del request.session['back_page'] if request.session.get('back_page_msg', None): del request.session['back_page_msg'] request.session['back_page'] = '/'.join([common.getHttpHeader(request), 'query/app-detail', str(app.id)]) request.session['back_page_msg'] = 'App Detail' #The success return page, when pay finish. if request.session.get('success_page', None): del request.session['success_page'] if request.session.get('success_page_msg', None): del request.session['success_page_msg'] request.session['success_page'] = '/'.join([common.getHttpHeader(request), 'transaction/trade-action/buy', str(app.id), str(request.user.id)]) request.session['success_page_msg'] = 'Trade Action' return paymentViews.pay(request, initParam=initParam) return render_to_response('transaction/one_price_buy.html', initParam, context_instance=RequestContext(request))