From b7660451a3f7df7597d6cabbcae849da43b676a0 Mon Sep 17 00:00:00 2001 From: ramaland <ramaland@jyu.fi> Date: Wed, 15 Feb 2023 16:22:39 +0000 Subject: [PATCH] biding page --- .../templates/{listBid.php => listBid.html} | 29 ++----------------- src/tjts5901/templates/view.html | 29 +++++++++++++++++++ src/tjts5901/views.py | 20 ++++++++++++- 3 files changed, 50 insertions(+), 28 deletions(-) rename src/tjts5901/templates/{listBid.php => listBid.html} (75%) create mode 100644 src/tjts5901/templates/view.html diff --git a/src/tjts5901/templates/listBid.php b/src/tjts5901/templates/listBid.html similarity index 75% rename from src/tjts5901/templates/listBid.php rename to src/tjts5901/templates/listBid.html index d0e05208..bfb32214 100644 --- a/src/tjts5901/templates/listBid.php +++ b/src/tjts5901/templates/listBid.html @@ -1,31 +1,9 @@ - -<?php - $x=0; -?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>View items</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous"> - <script> - function bid(id){ - const button = document.querySelector("#button"+id); - const form = document.querySelector("#item"+id); - - - if (form.className=="open"){ - form.className=""; - form.type="hidden"; - button.innerHTML = "Bid"; - } - else{ - form.className="open"; - form.type="number"; - button.innerHTML = "Cancel"; - } - } - </script> </head> <body> <header> @@ -36,17 +14,14 @@ {%for item in items %} <div class="d-flex w-100 justify-content-between mb-4"> <img src="data:image/png;base64,{{ item.image_base64 }}"> - <a href="#" class="list-group-item list-group-item-action" aria-current="true"> + <div class="list-group-item list-group-item-action" aria-current="true"> <div class="d-flex w-100 justify-content-between"> <h5 class="mb-1">{{ item.title }}</h5> <small>{{ item.created_at }}</small> </div> <p class="mb-1">{{ item.description }}</p> <small>{{ item.starting_bid }}</small> - <?php - $x++; - echo "<div class=\"row\"><button id=\"button".$x."\" for=\"item".$x."\" class=\"col-md-2\" onclick=\"bid(".$x.")\">Bid</button><form method=\"post\" action=\"#\" class=\"col-md-4\"><input id=\"item".$x."\" type=\"hidden\" min=\"{{ item.starting_bid }}\" placeholder=\"press enter to validate\" /></form></div>"; - ?> + <a href="{{ url_for('views.page_bid', id=item.id) }}"><button class="btn btn-primary">Bid</button></a> </div> <div class="row justify-content-md-center"> <div class="col-md-auto"> diff --git a/src/tjts5901/templates/view.html b/src/tjts5901/templates/view.html new file mode 100644 index 00000000..5df612f0 --- /dev/null +++ b/src/tjts5901/templates/view.html @@ -0,0 +1,29 @@ +{% extends 'base.html' %} + +{% block header %} + <div class="container"> + <div class="d-flex align-items-center"> + <h1 class="mr-auto">{% block title %}{{item.title}}{% endblock %}</h1> + </div> + </div> +{% endblock %} + +{% block content %} + + <div class="d-flex mb-4 container"> + <div class="col-md-4"> + <img src="data:image/png;base64,{{ item.image_base64 }}"> + </div> + <div class="col-md-4"> + <h5 class="mb-1">{{ item.title }}</h5> + <p class="mb-1">{{ item.description }}</p> + <p class="mb-1">Created : {{ item.created_at }}</p> + <p class="mb-1">Current bid : {{ item.starting_bid }}</p><br/> + <form method="POST" action="{{ url_for('views.bid', id=item.id)}}" class="row" enctype="multipart/form-data"> + <input class="col-md-9" id="bid" type="number" min="{{ item.starting_bid }}" placeholder="write your bid"> + <button for="bid" type="submit" class="btn btn-primary col-md-3">Validate</button> + </form> + </div> + </div> + +{% endblock %} \ No newline at end of file diff --git a/src/tjts5901/views.py b/src/tjts5901/views.py index 43a1f637..5327c2e5 100644 --- a/src/tjts5901/views.py +++ b/src/tjts5901/views.py @@ -169,7 +169,7 @@ def list_bid(): for item in items: item.image_base64 = base64.b64encode(item.image.read()).decode('utf-8') - html = render_template("listBid.php", items=items) + html = render_template("listBid.html", items=items) return html @bp.route("/bid") @@ -305,3 +305,21 @@ def api_item_place_bid(id): 'success': True, 'bid': bid.to_json() }) + +@bp.route("/view/<id>") +@login_required +def page_bid(id): + """ + Item view page. + + Displays the item details, and a form to place a bid. + """ + + item = Item.objects.get_or_404(id=id) + + # Dark pattern to show enticing message to user + #if item.closes_at < datetime.utcnow() + timedelta(hours=1): + # flash("This item is closing soon! Act now! Now! Now!") + + return render_template('view.html', item=item) + -- GitLab