def success(request, param): if param == "edit": return generate_response("Auction has been updated successfully") elif param == "create": return generate_response("Auction has been created successfully") elif param == "bid": return generate_response("You has bid successfully") elif param == "ban": return generate_response("Ban successfully")
def bid(request, auction_id): user = User.objects.get(username=request.user) auction = AuctionModel.objects.get(id=auction_id) amount = float("{0:.2f}".format(float(request.POST['new_price']))) if "version" in request.POST: if int(request.POST["version"]) != auction.version: return render(request, 'bidVersioning.html', {'auction': auction}, status=200) if auction.seller is user.id: return generate_response("You cannot bid on your own auctions") if auction.status != AuctionModel.ACTIVE: return generate_response("You can only bid on active auctions") if auction.deadline_date < datetime.now(timezone.utc): return generate_response("You can only bid on active auctions") if int(amount * 100) < int(auction.highest_bid * 100) + 1: return generate_response( "New bid must be greater than the current bid for at least 0.01") auction.highest_bid = amount auction.highest_bidder = user.id bidders = json.loads(auction.bidders) bidders.append(user.id) auction.bidders = json.dumps(bidders) auction.version = auction.version + 1 auction.save() send_mail( 'Auction has been bid', 'Auction #' + str(auction.id) + ' has a new highest bid', '*****@*****.**', [User.objects.get(id=auction.seller).email], fail_silently=False, ) send_mail( 'You have bid an auction', 'You have the highest bid to auction #' + str(auction.id), '*****@*****.**', [User.objects.get(id=user.id).email], fail_silently=False, ) return HttpResponseRedirect(reverse('auction:success', args=("bid", )), status=302)
def changeCurrency(request, currency_code): supported_currencies = ['eur', 'usd'] if currency_code.lower() in supported_currencies: if currency_code.lower() == 'eur': response = generate_response("Currency has been changed to EUR") response.set_cookie(CURRENCY_COOKIE_NAME, "0") else: response = requests.get(CURRENCY_API) rate = response.json()['quotes']['USDEUR'] response = generate_response("Currency has been changed to USD") response.set_cookie(CURRENCY_COOKIE_NAME, rate) return response else: return HttpResponseRedirect(reverse('index'), status=302)
def post(self, request, signature): try: signed_object = signing.loads(signature) except signing.BadSignature: return generate_response( "You tried to edit a non-existing auction.") auction = AuctionModel.objects.get(id=signed_object['auction']) form = EditAuctionForm(request.POST) if form.is_valid(): cd = form.cleaned_data auction.description = cd['description'] auction.version = auction.version + 1 auction.save() return HttpResponseRedirect(reverse('auction:success', args=("edit", )), status=302) else: return render( request, 'editAuction.html', { 'form': EditAuctionForm(initial={ 'title': auction.title, 'description': auction.description }), 'secret': signature }, status=200)
def changeLanguage(request, lang_code): supported_languages = ['en', 'sv'] if lang_code in supported_languages: if lang_code == 'en': response = generate_response( "Language has been changed to English") else: response = generate_response( "Language has been changed to Swedish") if request.user.is_authenticated: user = User.objects.get(username=request.user) user.language.language = lang_code user.save() translation.activate(lang_code) response.set_cookie(LANGUAGE_COOKIE_NAME, lang_code) return response else: return HttpResponseRedirect(reverse('index'), status=302)
def get(self, request, signature): try: signed_object = signing.loads(signature) except signing.BadSignature: return generate_response( "You tried to edit a non-existing auction.") auction = AuctionModel.objects.get(id=signed_object['auction']) return render( request, 'editAuction.html', { 'form': EditAuctionForm(initial={ 'title': auction.title, 'description': auction.description }), 'secret': signature }, status=200)
def edit_auction_error(request): return generate_response("That is not your auction to edit.")