checkout/src/purchase/views/basket.py

51 lines
1.7 KiB
Python
Raw Normal View History

2022-04-25 17:07:37 +02:00
from django.contrib.messages.views import SuccessMessageMixin
2022-04-24 18:59:04 +02:00
from django.urls import reverse
2022-04-25 23:04:49 +02:00
from django.utils.translation import gettext_lazy as _
2022-04-25 16:27:59 +02:00
from django.views.generic import CreateView, DeleteView, ListView, UpdateView
2022-04-24 16:21:39 +02:00
2022-04-24 18:59:04 +02:00
from purchase.forms import BasketForm
from purchase.models import Basket
from purchase.views.utils import ProtectedViewsMixin
2022-04-24 18:59:04 +02:00
2022-04-25 17:07:37 +02:00
class NewBasketView(ProtectedViewsMixin, SuccessMessageMixin, CreateView):
2022-04-24 18:59:04 +02:00
permission_required = ["purchase.add_basket"]
model = Basket
form_class = BasketForm
2022-04-25 23:04:49 +02:00
success_message = _("Successfully created basket.")
2022-04-24 18:59:04 +02:00
queryset = Basket.objects.priced()
2022-04-25 17:30:49 +02:00
def get_success_url(self):
if self.request.user.has_perm("purchase.change_basket"):
return super().get_success_url()
else:
return reverse("purchase:new")
2022-04-24 18:59:04 +02:00
2022-04-25 17:07:37 +02:00
class UpdateBasketView(ProtectedViewsMixin, SuccessMessageMixin, UpdateView):
2022-04-24 18:59:04 +02:00
permission_required = ["purchase.change_basket", "purchase.view_basket"]
model = Basket
form_class = BasketForm
2022-04-25 23:04:49 +02:00
success_message = _("Successfully updated basket.")
queryset = Basket.objects.priced()
2022-04-25 16:27:59 +02:00
class ListBasketsView(ProtectedViewsMixin, ListView):
permission_required = ["purchase.view_basket"]
model = Basket
context_object_name = "baskets"
ordering = "-id"
queryset = Basket.objects.priced()
2022-04-25 16:27:59 +02:00
2022-04-25 17:07:37 +02:00
class DeleteBasketView(ProtectedViewsMixin, SuccessMessageMixin, DeleteView):
2022-04-25 16:27:59 +02:00
permission_required = ["purchase.delete_basket"]
model = Basket
2022-04-25 23:04:49 +02:00
success_message = _("Basket successfully deleted.")
queryset = Basket.objects.priced()
2022-04-25 23:04:49 +02:00
context_object_name = "basket"
2022-04-25 16:27:59 +02:00
def get_success_url(self):
return reverse("purchase:list")