from django.contrib.auth.mixins import LoginRequiredMixin from django.core.exceptions import PermissionDenied from django.utils.decorators import method_decorator from django.views.decorators.csrf import csrf_exempt from django.views.generic import View class NoCsrfMixin(View): @method_decorator(csrf_exempt) def dispatch(self, request, *args, **kwargs): return super().dispatch(request, *args, **kwargs) class CustomerRequiredMixin(LoginRequiredMixin, View): def dispatch(self, request, *args, **kwargs): if request.user.is_customer(): return super().dispatch(request, *args, **kwargs) else: raise PermissionDenied class ContractorRequiredMixin(LoginRequiredMixin, View): def dispatch(self, request, *args, **kwargs): if request.user.is_contractor(): return super().dispatch(request, *args, **kwargs) else: raise PermissionDenied