delete.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536
  1. from django.views import View
  2. from django.contrib.auth.mixins import LoginRequiredMixin
  3. from django.contrib import messages
  4. from django.urls import reverse_lazy
  5. from django.shortcuts import get_object_or_404, redirect
  6. from django.views import View
  7. from tickets.models import TicketList, Ticket
  8. from tickets.utils import SuperuserStaffRequiredMixin, UserCanReadTicketListMixin, UserCanReadTicketMixin, UserCanWriteTicketMixin
  9. class BaseDeleteView(LoginRequiredMixin, View):
  10. model = None
  11. success_message = None
  12. redirect_url = None
  13. def post(self, request, pk):
  14. object = get_object_or_404(self.model, pk=pk)
  15. if self.success_message:
  16. messages.success(self.request, self.success_message.format(object))
  17. object.delete()
  18. return redirect(self.redirect_url)
  19. class TicketListDeleteView(BaseDeleteView, SuperuserStaffRequiredMixin, UserCanReadTicketListMixin):
  20. model = TicketList
  21. success_message = 'The "{0.name}" list has been successfully deleted from "{0.group.name}" group.'
  22. redirect_url = "tickets:ticket_list_list"
  23. class TicketDeleteView(BaseDeleteView, UserCanReadTicketMixin, UserCanWriteTicketMixin):
  24. model = Ticket
  25. success_message = 'The "{0.title}" ticket has been successfully deleted from {0.ticket_list} > {0.ticket_list.group}.'
  26. redirect_url = "tickets:ticket_list_list"