authentik.enterprise.lifecycle.api.reviews
1from django.utils.translation import gettext_lazy as _ 2from rest_framework.exceptions import ValidationError 3from rest_framework.mixins import CreateModelMixin 4from rest_framework.viewsets import GenericViewSet 5 6from authentik.core.api.utils import ModelSerializer 7from authentik.enterprise.api import EnterpriseRequiredMixin 8from authentik.enterprise.lifecycle.models import LifecycleIteration, Review 9from authentik.enterprise.lifecycle.utils import ReviewerUserSerializer 10 11 12class ReviewSerializer(EnterpriseRequiredMixin, ModelSerializer): 13 reviewer = ReviewerUserSerializer(read_only=True) 14 15 class Meta: 16 model = Review 17 fields = ["id", "iteration", "reviewer", "timestamp", "note"] 18 read_only_fields = ["id", "timestamp", "reviewer"] 19 20 def validate_iteration(self, iteration: LifecycleIteration) -> LifecycleIteration: 21 user = self.context["request"].user 22 if not iteration.user_can_review(user): 23 raise ValidationError(_("You are not allowed to submit a review for this object.")) 24 return iteration 25 26 27class ReviewViewSet(EnterpriseRequiredMixin, CreateModelMixin, GenericViewSet): 28 queryset = Review.objects.all() 29 serializer_class = ReviewSerializer 30 31 def perform_create(self, serializer: ReviewSerializer) -> None: 32 review = serializer.save(reviewer=self.request.user) 33 review.iteration.on_review(self.request)
class
ReviewSerializer(authentik.enterprise.api.EnterpriseRequiredMixin, authentik.core.api.utils.ModelSerializer):
13class ReviewSerializer(EnterpriseRequiredMixin, ModelSerializer): 14 reviewer = ReviewerUserSerializer(read_only=True) 15 16 class Meta: 17 model = Review 18 fields = ["id", "iteration", "reviewer", "timestamp", "note"] 19 read_only_fields = ["id", "timestamp", "reviewer"] 20 21 def validate_iteration(self, iteration: LifecycleIteration) -> LifecycleIteration: 22 user = self.context["request"].user 23 if not iteration.user_can_review(user): 24 raise ValidationError(_("You are not allowed to submit a review for this object.")) 25 return iteration
Mixin to validate that a valid enterprise license exists before allowing to save the object
def
validate_iteration( self, iteration: authentik.enterprise.lifecycle.models.LifecycleIteration) -> authentik.enterprise.lifecycle.models.LifecycleIteration:
class
ReviewSerializer.Meta:
16 class Meta: 17 model = Review 18 fields = ["id", "iteration", "reviewer", "timestamp", "note"] 19 read_only_fields = ["id", "timestamp", "reviewer"]
model =
<class 'authentik.enterprise.lifecycle.models.Review'>
class
ReviewViewSet(authentik.enterprise.api.EnterpriseRequiredMixin, rest_framework.mixins.CreateModelMixin, rest_framework.viewsets.GenericViewSet):
28class ReviewViewSet(EnterpriseRequiredMixin, CreateModelMixin, GenericViewSet): 29 queryset = Review.objects.all() 30 serializer_class = ReviewSerializer 31 32 def perform_create(self, serializer: ReviewSerializer) -> None: 33 review = serializer.save(reviewer=self.request.user) 34 review.iteration.on_review(self.request)
Mixin to validate that a valid enterprise license exists before allowing to save the object
serializer_class =
<class 'ReviewSerializer'>