diff --git a/castellum/subjects/mixins.py b/castellum/subjects/mixins.py index 3927cb7360095cf56f245c2df87f427c7c28d5cf..60bf2f4f3db2699a1aa179de6a1b299ab340e753 100644 --- a/castellum/subjects/mixins.py +++ b/castellum/subjects/mixins.py @@ -20,7 +20,6 @@ # . from django.conf import settings -from django.core.exceptions import PermissionDenied from django.urls import reverse from django.utils.functional import cached_property from django.views.generic import UpdateView @@ -36,6 +35,8 @@ from .models import Subject class SubjectMixin: """Use this on every view that represents a subject. + Requires ``AccessMixin``. + - set ``self.subject`` - check privacy level """ @@ -49,9 +50,10 @@ class SubjectMixin: return obj.subject def dispatch(self, request, *args, **kwargs): - if request.user.is_authenticated: - if not request.user.has_privacy_level(self.subject.privacy_level): - raise PermissionDenied + if not request.user.is_authenticated: + return self.handle_no_permission() + if not request.user.has_privacy_level(self.subject.privacy_level): + return self.handle_no_permission() return super().dispatch(request, *args, **kwargs) def get_context_data(self, **kwargs):