|
30 | 30 | from local_units.serializers import ( |
31 | 31 | DelegationOfficeSerializer, |
32 | 32 | LocalUnitChangeRequestSerializer, |
| 33 | + LocalUnitDeprecateSerializer, |
33 | 34 | LocalUnitDetailSerializer, |
34 | 35 | LocalUnitOptionsSerializer, |
35 | 36 | LocalUnitSerializer, |
@@ -214,6 +215,42 @@ def get_latest_changes(self, request, pk=None, version=None): |
214 | 215 | serializer = LocalUnitChangeRequestSerializer(change_request, context={"request": request}) |
215 | 216 | return response.Response(serializer.data) |
216 | 217 |
|
| 218 | + @extend_schema(request=LocalUnitDeprecateSerializer, responses=None) |
| 219 | + @action( |
| 220 | + detail=True, |
| 221 | + methods=["post"], |
| 222 | + url_path="deprecate", |
| 223 | + serializer_class=LocalUnitDeprecateSerializer, |
| 224 | + permission_classes=[permissions.IsAuthenticated, DenyGuestUserPermission], |
| 225 | + ) |
| 226 | + def deprecate(self, request, pk=None): |
| 227 | + """Deprecate local unit object object""" |
| 228 | + instance = self.get_object() |
| 229 | + serializer = LocalUnitDeprecateSerializer(instance, data=request.data) |
| 230 | + serializer.is_valid(raise_exception=True) |
| 231 | + serializer.save() |
| 232 | + return response.Response( |
| 233 | + {"message": "Local unit object deprecated successfully."}, |
| 234 | + status=status.HTTP_200_OK, |
| 235 | + ) |
| 236 | + |
| 237 | + @extend_schema(request=None, responses=PrivateLocalUnitSerializer) |
| 238 | + @action( |
| 239 | + detail=True, |
| 240 | + methods=["post"], |
| 241 | + url_path="revert-deprecate", |
| 242 | + permission_classes=[permissions.IsAuthenticated, DenyGuestUserPermission], |
| 243 | + ) |
| 244 | + def revert_deprecate(self, request, pk=None): |
| 245 | + """Revert the deprecate local unit object.""" |
| 246 | + local_unit = self.get_object() |
| 247 | + local_unit.is_deprecated = False |
| 248 | + local_unit.deprecated_reason = None |
| 249 | + local_unit.deprecated_reason_overview = "" |
| 250 | + local_unit.save(update_fields=["is_deprecated", "deprecated_reason", "deprecated_reason_overview"]) |
| 251 | + serializer = PrivateLocalUnitSerializer(local_unit, context={"request": request}) |
| 252 | + return response.Response(serializer.data) |
| 253 | + |
217 | 254 |
|
218 | 255 | class LocalUnitViewSet(viewsets.ModelViewSet): |
219 | 256 | queryset = LocalUnit.objects.select_related( |
|
0 commit comments