diff --git a/backend/src/openarchiefbeheer/accounts/api/__init__.py b/backend/src/openarchiefbeheer/accounts/api/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/backend/src/openarchiefbeheer/accounts/api/serializers.py b/backend/src/openarchiefbeheer/accounts/api/serializers.py new file mode 100644 index 00000000..a18dc94f --- /dev/null +++ b/backend/src/openarchiefbeheer/accounts/api/serializers.py @@ -0,0 +1,22 @@ +from rest_framework import serializers + +from ..models import Role, User + + +class RoleSerializer(serializers.ModelSerializer): + class Meta: + model = Role + fields = ( + "name", + "can_start_destruction", + "can_review_destruction", + "can_view_case_details", + ) + + +class UserSerializer(serializers.ModelSerializer): + role = RoleSerializer() + + class Meta: + model = User + fields = ("username", "first_name", "last_name", "email", "role") diff --git a/backend/src/openarchiefbeheer/accounts/api/views.py b/backend/src/openarchiefbeheer/accounts/api/views.py new file mode 100644 index 00000000..85bab92a --- /dev/null +++ b/backend/src/openarchiefbeheer/accounts/api/views.py @@ -0,0 +1,25 @@ +from django.db.models import QuerySet +from django.utils.translation import gettext_lazy as _ + +from drf_spectacular.utils import extend_schema +from rest_framework.generics import ListAPIView + +from openarchiefbeheer.accounts.models import User + +from .serializers import UserSerializer + + +@extend_schema( + summary=_("Reviewers list"), + description=_( + "List all the users that have the permission to review destruction lists." + ), + responses={ + 200: UserSerializer(many=True), + }, +) +class ReviewersView(ListAPIView): + serializer_class = UserSerializer + + def get_queryset(self) -> QuerySet[User]: + return User.objects.filter(role__can_review_destruction=True) diff --git a/backend/src/openarchiefbeheer/api/urls.py b/backend/src/openarchiefbeheer/api/urls.py index db6bb8dd..acaf2b80 100644 --- a/backend/src/openarchiefbeheer/api/urls.py +++ b/backend/src/openarchiefbeheer/api/urls.py @@ -6,6 +6,8 @@ SpectacularRedocView, ) +from openarchiefbeheer.accounts.api.views import ReviewersView + app_name = "api" urlpatterns = [ @@ -35,4 +37,5 @@ "openarchiefbeheer.api.authentication.urls", namespace="authentication" ), ), + path("v1/reviewers/", ReviewersView.as_view(), name="reviewers"), ]