feat: wishlist

This commit is contained in:
2025-01-02 11:17:25 +01:00
parent 2a51aabc5e
commit eed3905638
8 changed files with 155 additions and 14 deletions
+32 -1
View File
@@ -4,7 +4,7 @@ from django.utils.text import gettext_lazy as _
from django.views.decorators.http import require_http_methods
from django.views.generic import TemplateView
from shop.models import CartItem, Product, ProductCategory
from shop.models import CartItem, Product, ProductCategory, WishlistedProduct
from web.models import WebSettings
from web.settings import ANONYMOUS_CART_ID_COOKIE_NAME
from web.utils import get_or_create_cart
@@ -114,6 +114,37 @@ def delete_cart_item(request, pk, *args, **kwargs):
return HttpResponse(status=204, headers={"HX-Trigger": "updated-cart"})
@require_http_methods(
[
"POST",
]
)
def add_to_wishlist(request, *args, **kwargs):
product = get_object_or_404(Product, pk=request.POST.get("product"))
response = HttpResponse(status=201, headers={"HX-Trigger": "updated-wishlist"})
if request.user.is_anonymous:
return HttpResponse(status=400)
WishlistedProduct.objects.get_or_create(
user=request.user,
product=product,
)
return response
@require_http_methods(
[
"POST",
]
)
def delete_from_wishlist(request, pk, *args, **kwargs):
wishlisted_item = get_object_or_404(WishlistedProduct, product_id=pk, user=request.user)
wishlisted_item.delete()
return HttpResponse(status=204, headers={"HX-Trigger": "updated-wishlist"})
def manifest(request, *args, **kwargs):
settings = WebSettings.load()