checkout/src/purchase/views/basket.py
2022-04-25 23:05:17 +02:00

51 lines
1.7 KiB
Python

from django.contrib.messages.views import SuccessMessageMixin
from django.urls import reverse
from django.utils.translation import gettext_lazy as _
from django.views.generic import CreateView, DeleteView, ListView, UpdateView
from purchase.forms import BasketForm
from purchase.models import Basket
from purchase.views.utils import ProtectedViewsMixin
class NewBasketView(ProtectedViewsMixin, SuccessMessageMixin, CreateView):
permission_required = ["purchase.add_basket"]
model = Basket
form_class = BasketForm
success_message = _("Successfully created basket.")
queryset = Basket.objects.priced()
def get_success_url(self):
if self.request.user.has_perm("purchase.change_basket"):
return super().get_success_url()
else:
return reverse("purchase:new")
class UpdateBasketView(ProtectedViewsMixin, SuccessMessageMixin, UpdateView):
permission_required = ["purchase.change_basket", "purchase.view_basket"]
model = Basket
form_class = BasketForm
success_message = _("Successfully updated basket.")
queryset = Basket.objects.priced()
class ListBasketsView(ProtectedViewsMixin, ListView):
permission_required = ["purchase.view_basket"]
model = Basket
context_object_name = "baskets"
ordering = "-id"
queryset = Basket.objects.priced()
class DeleteBasketView(ProtectedViewsMixin, SuccessMessageMixin, DeleteView):
permission_required = ["purchase.delete_basket"]
model = Basket
success_message = _("Basket successfully deleted.")
queryset = Basket.objects.priced()
context_object_name = "basket"
def get_success_url(self):
return reverse("purchase:list")