2022-04-24 18:59:04 +02:00
|
|
|
from django.contrib.auth.mixins import LoginRequiredMixin, PermissionRequiredMixin
|
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 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
|
|
|
|
|
|
|
|
|
|
|
|
class ProtectedViewsMixin(PermissionRequiredMixin, LoginRequiredMixin):
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
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 17:07:37 +02:00
|
|
|
success_message = "Successfully created basket."
|
2022-04-24 18:59:04 +02:00
|
|
|
|
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 17:07:37 +02:00
|
|
|
success_message = "Successfully updated basket."
|
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"
|
|
|
|
|
|
|
|
|
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 17:07:37 +02:00
|
|
|
success_message = "Basket successfully deleted."
|
2022-04-25 16:27:59 +02:00
|
|
|
|
|
|
|
def get_success_url(self):
|
|
|
|
return reverse("purchase:list")
|