views.py

#
from django.contrib.auth.mixins import LoginRequiredMixin

from sm.views import SafeDeleteMixin
from sm.mixins import MultiTenantMixin

from .models import Model
from .forms import Form, FormDisabled
from . import app_label

from django.views.generic import ListView as GenericListView
from django.views.generic.edit import UpdateView as GenericUpdateView
from django.views.generic.edit import CreateView as GenericCreateView
from django.views.generic.edit import DeleteView as GenericDeleteView
from django.contrib.messages.views import SuccessMessageMixin

from django.utils.translation import gettext as _

try:
    from django.urls import reverse_lazy
except Exception:  # pragma: no cover
    from django.urls import reverse_lazy  # pragma: no cover
#
class ListView(LoginRequiredMixin, MultiTenantMixin, GenericListView):
    template_name = "%s/list.html" % app_label
    model = Model
    paginate_by = 20
    paginate_orphans = paginate_by / 4
    ordering = "name"
#
class DetailView(LoginRequiredMixin, MultiTenantMixin, GenericUpdateView):
    template_name = "%s/detail.html" % app_label
    model = Model
    form_class = FormDisabled
#
class UpdateView(
    SuccessMessageMixin,
    LoginRequiredMixin,
    MultiTenantMixin,
    GenericUpdateView,
):
    success_message = "%(name)s " + _("was updated successfully")
    template_name = "%s/edit.html" % app_label
    model = Model
    form_class = Form
    success_url = reverse_lazy("%s:index" % app_label)
#
class CreateView(
    SuccessMessageMixin,
    LoginRequiredMixin,
    MultiTenantMixin,
    GenericCreateView,
):
    success_message = "%(name)s " + _("was created successfully")

    template_name = "%s/edit.html" % app_label
    fields = "__all__"
    model = Model
    success_url = reverse_lazy("%s:index" % app_label)
#
class DeleteView(
    SafeDeleteMixin,
    LoginRequiredMixin,
    MultiTenantMixin,
    GenericDeleteView,
):
    success_message = "%(name)s " + _("was deleted successfully")
    template_name = "delete.html"
    model = Model
    success_url = reverse_lazy("%s:index" % app_label)