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)
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

reviewer
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
class ReviewSerializer.Meta:
16    class Meta:
17        model = Review
18        fields = ["id", "iteration", "reviewer", "timestamp", "note"]
19        read_only_fields = ["id", "timestamp", "reviewer"]
fields = ['id', 'iteration', 'reviewer', 'timestamp', 'note']
read_only_fields = ['id', 'timestamp', 'reviewer']
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

queryset = <QuerySet []>
serializer_class = <class 'ReviewSerializer'>
def perform_create( self, serializer: ReviewSerializer) -> None:
32    def perform_create(self, serializer: ReviewSerializer) -> None:
33        review = serializer.save(reviewer=self.request.user)
34        review.iteration.on_review(self.request)
name = None
description = None
suffix = None
detail = None
basename = None