Пример #1
0
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")
Пример #2
0
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)
Пример #3
0
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)
Пример #4
0
    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)
Пример #5
0
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)
Пример #6
0
    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)
Пример #7
0
def edit_auction_error(request):
    return generate_response("That is not your auction to edit.")