4
4
from django_filters .rest_framework import DjangoFilterBackend
5
5
from drf_spectacular .utils import OpenApiExample , extend_schema , extend_schema_view
6
6
from rest_framework import mixins , viewsets
7
- from rest_framework .decorators import action
8
7
from rest_framework .permissions import IsAuthenticated
9
- from rest_framework .response import Response
10
8
11
9
from ..models import (
12
10
DestructionList ,
22
20
DestructionListReviewItemFilterset ,
23
21
ReviewResponseFilterset ,
24
22
)
25
- from .permissions import (
26
- CanMakeRequestedChanges ,
27
- CanStartDestructionPermission ,
28
- CanUpdateDestructionList ,
29
- )
23
+ from .permissions import CanStartDestructionPermission , CanUpdateDestructionList
30
24
from .serializers import (
31
25
DestructionListAPIResponseSerializer ,
32
26
DestructionListItemReviewSerializer ,
132
126
description = _ ("Retrieve details about a destruction list." ),
133
127
responses = {200 : DestructionListAPIResponseSerializer },
134
128
),
135
- make_requested_changes = extend_schema (
136
- tags = ["Destruction list" ],
137
- summary = _ ("Make requested changes" ),
138
- description = _ (
139
- "Update a destruction list after a reviewer has requested changes."
140
- ),
141
- ),
142
129
)
143
130
class DestructionListViewSet (
144
131
mixins .RetrieveModelMixin ,
@@ -158,8 +145,6 @@ def get_permissions(self):
158
145
permission_classes = [IsAuthenticated & CanStartDestructionPermission ]
159
146
elif self .action == "update" :
160
147
permission_classes = [IsAuthenticated & CanUpdateDestructionList ]
161
- elif self .action == "make_requested_changes" :
162
- permission_classes = [IsAuthenticated & CanMakeRequestedChanges ]
163
148
else :
164
149
permission_classes = [IsAuthenticated ]
165
150
return [permission () for permission in permission_classes ]
@@ -177,12 +162,6 @@ def create(self, request, *args, **kwargs):
177
162
def update (self , request , * args , ** kwargs ):
178
163
return super ().update (request , * args , ** kwargs )
179
164
180
- @action (detail = True , methods = ["patch" ], name = "make-requested-changes" )
181
- def make_requested_changes (self , request , * args , ** kwargs ):
182
- # Triggers the object permissions check
183
- self .get_object ()
184
- return Response ("Not implemented!" )
185
-
186
165
187
166
@extend_schema_view (
188
167
list = extend_schema (
@@ -253,9 +232,27 @@ class DestructionListItemReviewViewSet(mixins.ListModelMixin, viewsets.GenericVi
253
232
summary = _ ("List review responses" ),
254
233
description = _ ("List all the responses to the reviews of a destruction list." ),
255
234
),
235
+ create = extend_schema (
236
+ tags = ["Reviews" ],
237
+ summary = _ ("Create a review response" ),
238
+ description = _ (
239
+ "Create a response to a review. "
240
+ "You need to be the author of a destruction list for this and you need to be assigned to it. "
241
+ "The status of the destruction list must be 'changes requested'."
242
+ ),
243
+ ),
256
244
)
257
- class ReviewResponseViewSet (mixins .ListModelMixin , viewsets .GenericViewSet ):
245
+ class ReviewResponseViewSet (
246
+ mixins .ListModelMixin , mixins .CreateModelMixin , viewsets .GenericViewSet
247
+ ):
258
248
serializer_class = ReviewResponseSerializer
259
249
queryset = ReviewResponse .objects .all ()
260
250
filter_backends = (DjangoFilterBackend ,)
261
251
filterset_class = ReviewResponseFilterset
252
+
253
+ def get_permissions (self ):
254
+ if self .action == "create" :
255
+ permission_classes = [IsAuthenticated & CanStartDestructionPermission ]
256
+ else :
257
+ permission_classes = [IsAuthenticated ]
258
+ return [permission () for permission in permission_classes ]
0 commit comments