Skip to content

Commit f3321f8

Browse files
committed
✨ [#127] Endpoints to retrieve review responses
1 parent 33bb569 commit f3321f8

File tree

5 files changed

+45
-3
lines changed

5 files changed

+45
-3
lines changed

backend/src/openarchiefbeheer/api/urls.py

+6
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
DestructionListItemsViewSet,
1515
DestructionListReviewViewSet,
1616
DestructionListViewSet,
17+
ReviewResponseViewSet,
1718
)
1819
from openarchiefbeheer.zaken.api.views import (
1920
CacheZakenView,
@@ -41,6 +42,11 @@
4142
DestructionListItemReviewViewSet,
4243
basename="reviews-items",
4344
)
45+
router.register(
46+
r"review-responses",
47+
ReviewResponseViewSet,
48+
basename="review-responses",
49+
)
4450
router.register(r"zaken", ZakenViewSet, basename="zaken")
4551

4652

backend/src/openarchiefbeheer/destruction/api/filtersets.py

+7-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
DestructionListItem,
88
DestructionListItemReview,
99
DestructionListReview,
10+
ReviewResponse,
1011
)
1112

1213

@@ -46,7 +47,12 @@ def filter_destruction_list_uuid(
4647

4748

4849
class DestructionListReviewItemFilterset(FilterSet):
49-
5050
class Meta:
5151
model = DestructionListItemReview
5252
fields = ("review",)
53+
54+
55+
class ReviewResponseFilterset(FilterSet):
56+
class Meta:
57+
model = ReviewResponse
58+
fields = ("review",)

backend/src/openarchiefbeheer/destruction/api/serializers.py

+11-2
Original file line numberDiff line numberDiff line change
@@ -355,10 +355,19 @@ class ReviewItemResponseSerializer(serializers.ModelSerializer):
355355

356356
class Meta:
357357
model = ReviewItemResponse
358-
fields = ("review_item", "action_item", "action_zaak", "created", "comment")
358+
fields = (
359+
"pk",
360+
"review_item",
361+
"action_item",
362+
"action_zaak",
363+
"created",
364+
"comment",
365+
)
359366

360367

361368
class ReviewResponseSerializer(serializers.ModelSerializer):
369+
items_responses = ReviewItemResponseSerializer(many=True)
370+
362371
class Meta:
363372
model = ReviewResponse
364-
fields = ("review", "comment", "created")
373+
fields = ("pk", "review", "comment", "created", "items_responses")

backend/src/openarchiefbeheer/destruction/api/viewsets.py

+17
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,14 @@
1313
DestructionListItem,
1414
DestructionListItemReview,
1515
DestructionListReview,
16+
ReviewResponse,
1617
)
1718
from .filtersets import (
1819
DestructionListFilterset,
1920
DestructionListItemFilterset,
2021
DestructionListReviewFilterset,
2122
DestructionListReviewItemFilterset,
23+
ReviewResponseFilterset,
2224
)
2325
from .permissions import (
2426
CanMakeRequestedChanges,
@@ -31,6 +33,7 @@
3133
DestructionListItemSerializer,
3234
DestructionListReviewSerializer,
3335
DestructionListSerializer,
36+
ReviewResponseSerializer,
3437
)
3538

3639

@@ -242,3 +245,17 @@ class DestructionListItemReviewViewSet(mixins.ListModelMixin, viewsets.GenericVi
242245
queryset = DestructionListItemReview.objects.all()
243246
filter_backends = (DjangoFilterBackend,)
244247
filterset_class = DestructionListReviewItemFilterset
248+
249+
250+
@extend_schema_view(
251+
list=extend_schema(
252+
tags=["Reviews"],
253+
summary=_("List review responses"),
254+
description=_("List all the responses to the reviews of a destruction list."),
255+
),
256+
)
257+
class ReviewResponseViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
258+
serializer_class = ReviewResponseSerializer
259+
queryset = ReviewResponse.objects.all()
260+
filter_backends = (DjangoFilterBackend,)
261+
filterset_class = ReviewResponseFilterset

backend/src/openarchiefbeheer/destruction/models.py

+4
Original file line numberDiff line numberDiff line change
@@ -323,6 +323,10 @@ class Meta:
323323
def __str__(self):
324324
return f"Response to {self.review}"
325325

326+
@property
327+
def items_responses(self):
328+
return ReviewItemResponse.objects.filter(review_item__review=self.review)
329+
326330

327331
class ReviewItemResponse(models.Model):
328332
review_item = models.ForeignKey(

0 commit comments

Comments
 (0)