From fe4c03a06add53b98120c453950e51bd5aef0dc4 Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Fri, 13 Mar 2026 19:35:05 +0000 Subject: [PATCH] Autosave: 20260313-193504 --- core/__pycache__/urls.cpython-311.pyc | Bin 1475 -> 1566 bytes core/__pycache__/views.cpython-311.pyc | Bin 6741 -> 7713 bytes core/templates/core/cart.html | 7 +++++-- core/urls.py | 4 +++- core/views.py | 23 +++++++++++++++++++++++ 5 files changed, 31 insertions(+), 3 deletions(-) diff --git a/core/__pycache__/urls.cpython-311.pyc b/core/__pycache__/urls.cpython-311.pyc index 2e2dd18c64ec924d135a53a3fd31b30081802e91..f66bd5f7d337fbe13fe6585c6113f24e016ffe21 100644 GIT binary patch delta 481 zcmX@iJ yIWI340}vFZZOMGk%)sy%#DM{RDC6^*iR$idxqMN4j0{W+sf;PCsoW`S zYuJ|oHLM0=2ms4)r1GS2VwK?n$}?y2PuyV6$UpIgF(cPx8AfA9zR3ZMzUI6sGFbJ< zrgEmpq06LmM+v0J2Qz3YOy0$)!^k=LIinUQM{-7La&~@c$z%bhKt&#)i!>Q;vE(J@ zrdA0S6y>LsCYR{jWagDv6=d7#7x7MRVw%FpKUtjFL7We$wu%#`UB3tv9DbUDljE4v zn2Pu(A7qZ?k_QSg0&(%y$to-+^<0ch9~kIGNHMT-Hn?;Mb%e}dyTBrUkwt#;S(axi lH&{4;qS6yG7DQcOF}TQLaD~O-gE$XAQv){$7Rdsg3jq0(XuSXc delta 347 zcmbQobC_FwIWI340}w1v-IBS1nStRkhyw$BP{!xJiR$h=j0{W+sf;PCsaz>+6EBFe za-?#nZ~__ZTtIQ=EWU|b%o+J6zAl229%tf&1fdelOnT*eHqa7)j$jZ z>0D9#DYC%~nsSqGFzPUJOlD=$nrz7wz{owhi%Fi5XYwkhDU5uR?U^0ed4W3oGzBJ4 zV@{jQ$P&gS2jnvXaq;xYi7Y1doQzB#7-&mKFtBnqxO510gv?;Oz#@N2#C%RPdnSRZ0Dw<-dnra5L zfEm<+oaZTo%&-{e0@$jn zfNh3H4@{F8Fg)9M1<~4p8k~N0Be?^}q5lad^)OttS&smw^eAAb;W6aVEsgv1rn(M0 zXjvN=0n9Gl-Sd@Bf1_NS}8r3JKU03hvlywrHFWLP$B zX6^2mqz<44*;)6$X$6I%Ym&4T_nio6-NJaLQYqTbu81+I3r-1kN8BeQ*{`D2w-wHg zFK=ZmqfjttT5!aYWl&2%E!vJ;e`b|U(?CeFi&77$-<9Tu@JxFVRDiU=jX$Xz)w9-_ zQ^hRRGt|)Y)X3R%7l`twJ;gru^{^j2VIevHqvx(5?Eualc0o=EG4{FKD(q$7$tRoF z8=+w|7iYb``d(qT)Za9J`3*6Z+JP+ zQXG}{BghCo1TO+K0;D24GD3}!tZh(i5$Zu=5RwCdg9sLYp;L65K7+uE!$Vuy?ofaC z%Sho4qZT^ca2exD5f08@3SAH&d7-8R>xw*{Oaajmb6ILr?q&!jvAEJ6s^A{q?07B1 zvYUzd5X1Kw(2=S74LBKNES7Myq zi)#F3-)H$XJ`~EF%Nys@B0T|O^mT+c5O}rKlg&#VHRziF>yzz-sbLn+8JW|xXx6N1 zAT+|Z#lY752eFTYI9KJ)r+}4q^R}UbY)ec3`TRTJ z`h5x4YSZPRB_;VlNnSg5gI1L7i^}$?;bkRMC4#hdB^1A=R6^a0q3#8_`wum8`IRL# z^*~MCIDf0Wpr$Hn-=f+#b@;bb_ig_d{+sG8wMx8_pF>4%zvRF2!b-I3OXKJ_{)Om3 zB|5Me9k}FOkt2(8Vo6RtkW^wj;)GXXNuI$m29gvU3jXnVH~x7SIN%9JwYUS>X-6?57n8iH(&=a zDSpWK=ZJq!YC|0-9EGVuC^k7SA81s&Xy$V~Np}eMiFesQ@*rGaDi{Z85rnZrtgqS6 zo1TkwE|7J9%d9hzVtW$4`9lehus=y$;blQx6q>58h_J0n03N!DD+Uz&4NoVlVuQiC G+~|LxpxxvE delta 1605 zcmZ8hO>7%Q6rPQ}>;K<4&Yw-3QjxfY2xt>Te*l&A073{T6=qda5E8sMYZJLXe17}p&3kXY_szV2 z>igrXALepthQBM~^WJ)av77WU{!NXHKW?$NS2u=U%1(J{JMCrcjF+{u2IGvIZqCcw zd9Pp>yrNyyKFck6WxI@af+yW+uVPoc8GFX7+Ew(WE;DC-y@V9nE zI}B9Jab1=4feUDDU4$82ge*ccrV=1t9*7`>itNT7H*4t4$uDC6oFSfo(u^Wup6mv} zGC~kTXfztIi2o|z2cHkxVT+5<>A7$SopbWf__|S-N6f%DEZ;TjRUMjc^@3I)Tvq_B zVpv^%Yu<%nf0>`u=^IuEG6+pW*9;7_v5vfM&6#(jy)1vWP8#+7g~X?Zd4vMxSIPO> zG+Muz2(J~+3@!?2Y&yaAmhS+EHEE{lRV+(GZVlpy9xAf(3*ij(}W5WWZ7K6Hvk6ON2}8*F;JFl)8ppUrDdTjHB{K z?j1`fSe870`r!vLDoRKygiV682+aiCNA~>)DmP|1YDjO7BIPgndv8CVo*kVJ)(H{> zNdk+Yh@etVw+o_+M}-tQi9MCa;h<_JIDiLeSxd&!45&gh!q%vzKo#X%g~s8>C{A-i zRfv-@D>Nt|IKBT};dKLBOP?1G7jgh&~NF2=NX$~7v#9jOOtFe9DC=1MVgt?{ij&*#Dow7w$w9jGxSuP;`Idep?OZd_$YTL)ne zx8=~UtWgeqZHpAC1x`}Y&y9XefZm7b0+Q4KC(MAD*C+XiL7i-RhyG5U!h{1?JOtZ} iB^W(2K`3`>kH{OfL-L!NwSTK-8F`j9Hhw42TmJ(l&0CZJ diff --git a/core/templates/core/cart.html b/core/templates/core/cart.html index 5587fcc..9f54e29 100644 --- a/core/templates/core/cart.html +++ b/core/templates/core/cart.html @@ -31,7 +31,10 @@

Total: {{ total_price }} ETB

- Proceed to Checkout +
+ {% csrf_token %} + +
{% else %}

Your cart is empty.

@@ -41,4 +44,4 @@ Continue Shopping -{% endblock %} +{% endblock %} \ No newline at end of file diff --git a/core/urls.py b/core/urls.py index 4b180d5..6037293 100644 --- a/core/urls.py +++ b/core/urls.py @@ -5,6 +5,7 @@ from .views import ( add_to_cart, buyer_dashboard, cart_view, + checkout, dashboard_redirect, home, product_detail, @@ -23,4 +24,5 @@ urlpatterns = [ path("cart/", cart_view, name="cart_view"), path("cart/add//", add_to_cart, name="add_to_cart"), path("cart/remove//", remove_from_cart, name="remove_from_cart"), -] + path("checkout/", checkout, name="checkout"), +] \ No newline at end of file diff --git a/core/views.py b/core/views.py index f2dc7d0..b43a46b 100644 --- a/core/views.py +++ b/core/views.py @@ -3,6 +3,7 @@ import platform from django import get_version as django_version from django.contrib.auth.decorators import login_required +from django.db import transaction from django.db.models import Count, DecimalField, ExpressionWrapper, F, Sum from django.shortcuts import get_object_or_404, redirect, render from django.utils import timezone @@ -121,3 +122,25 @@ def cart_view(request): continue context = {"items": items, "total_price": total_price} return render(request, "core/cart.html", context) + + +@login_required +@transaction.atomic +def checkout(request): + cart = request.session.get("cart", {}) + if not cart: + return redirect("cart_view") + + order = Order.objects.create(buyer=request.user) + + for product_id, quantity in cart.items(): + product = get_object_or_404(Product, pk=product_id) + OrderItem.objects.create( + order=order, + product=product, + quantity=quantity, + price=product.price + ) + + request.session["cart"] = {} + return redirect("buyer_dashboard") \ No newline at end of file