From 533fe7c1ce7e1873e49ff900724cad78061ef771 Mon Sep 17 00:00:00 2001 From: Martin Quarda Date: Sun, 13 Oct 2024 16:03:30 +0200 Subject: [PATCH] fix --- alkatorapi/views.py | 17 +++++++++++------ frontend/src/scripts/index.js | 6 +++--- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/alkatorapi/views.py b/alkatorapi/views.py index 5e2f143..ded2778 100644 --- a/alkatorapi/views.py +++ b/alkatorapi/views.py @@ -8,6 +8,7 @@ from django.contrib.auth.models import User as DjangoUser from django.contrib.auth import authenticate from django.contrib.auth import login as auth_login, logout as auth_logout from django.core.mail import send_mail, mail_admins, EmailMessage +from django.db.utils import IntegrityError from django.utils.datastructures import MultiValueDictKeyError from datetime import date, datetime, timedelta from weasyprint import HTML @@ -354,12 +355,16 @@ def cart_add(request): cart.save() else: cart = user.cart - cart_product = CartProduct( - product=Product.objects.get(id=_id), - cart=cart, - quantity=1, - ) - cart_product.save() + try: + cart_product = CartProduct( + product=Product.objects.get(id=_id), + cart=cart, + quantity=1, + ) + cart_product.save() + except IntegrityError as e: + return HttpResponse('{"status":"failed", "reason":"Předmět už v košíku je!"}', content_type='application/json') + return HttpResponse('{"status":"success", "reason":"Úspěšně přidáno do košíku."}', status=200) def results(request): diff --git a/frontend/src/scripts/index.js b/frontend/src/scripts/index.js index cf12895..6f8babc 100644 --- a/frontend/src/scripts/index.js +++ b/frontend/src/scripts/index.js @@ -81,14 +81,14 @@ class Main extends Component { } addToCart = (id) =>{ fetch(addr_prefix + "/api/cart/add?id=" + id).then(resp => resp.json()).then(json=>{ - if(json.reason){ + if(json.status == "failed"){ this.setState({ - status_text: data.reason, + status_text: json.reason, status: "failed", }) }else{ this.setState({ - status_text: data.success, + status_text: json.reason, status: "success", cart: [...this.state.cart, id], });