You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
942 B
27 lines
942 B
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
|
|
|