MAKENTNU/web

View on GitHub
src/makerspace/views.py

Summary

Maintainability
A
0 mins
Test Coverage
from abc import ABC

from django.contrib.auth.mixins import PermissionRequiredMixin
from django.urls import reverse_lazy
from django.utils.translation import gettext_lazy as _
from django.views.generic import CreateView, DeleteView, DetailView, ListView, UpdateView

from contentbox.views import ContentBoxDetailView
from util.templatetags.string_tags import title_en
from util.view_utils import CustomFieldsetFormMixin, PreventGetRequestsMixin
from .forms import EquipmentForm
from .models import Equipment


class MakerspaceView(ContentBoxDetailView):
    template_name = 'makerspace/makerspace.html'


class EquipmentDetailView(DetailView):
    model = Equipment
    template_name = 'makerspace/equipment/equipment_detail.html'
    context_object_name = 'equipment'


class EquipmentListView(ListView):
    model = Equipment
    queryset = Equipment.objects.default_order_by()
    template_name = 'makerspace/equipment/equipment_list.html'
    context_object_name = 'equipment_list'


class AdminEquipmentListView(PermissionRequiredMixin, ListView):
    model = Equipment
    queryset = Equipment.objects.default_order_by()
    template_name = 'makerspace/equipment/admin_equipment_list.html'
    context_object_name = 'equipment_list'

    def has_permission(self):
        return self.request.user.has_any_permissions_for(Equipment)


class EquipmentFormMixin(CustomFieldsetFormMixin, ABC):
    model = Equipment
    form_class = EquipmentForm
    success_url = reverse_lazy('admin_equipment_list')

    back_button_link = success_url
    back_button_text = _("Admin page for equipment")


class EquipmentCreateView(PermissionRequiredMixin, EquipmentFormMixin, CreateView):
    permission_required = ('makerspace.add_equipment',)

    save_button_text = _("Add")

    def get_form_title(self):
        return title_en(_("Add equipment"))


class EquipmentUpdateView(PermissionRequiredMixin, EquipmentFormMixin, UpdateView):
    permission_required = ('makerspace.change_equipment',)

    form_title = _("Change Equipment")


class EquipmentDeleteView(PermissionRequiredMixin, PreventGetRequestsMixin, DeleteView):
    permission_required = ('makerspace.delete_equipment',)
    model = Equipment
    success_url = reverse_lazy('admin_equipment_list')