# -*- coding: utf-8 -*- from django.contrib.auth.mixins import ( AccessMixin, LoginRequiredMixin as LoginRequiredMixInBase, PermissionRequiredMixin as PermissionRequiredMixinBase, ) from django.utils.decorators import method_decorator from django.views.decorators.cache import never_cache @method_decorator(never_cache, name="dispatch") class LoginRequiredMixin(LoginRequiredMixInBase): pass @method_decorator(never_cache, name="dispatch") class PermissionRequiredMixin(PermissionRequiredMixinBase): login_url = "/login" @method_decorator(never_cache, name="dispatch") class StaffOnlyMixin(AccessMixin): """ Verify the current user is staff. """ def dispatch(self, request, *args, **kwargs): if not request.user.is_staff: return self.handle_no_permission() return super().dispatch(request, *args, **kwargs)