From 1429aa754f3ab5d1a6691b5b7e377e21ea129b4d Mon Sep 17 00:00:00 2001 From: Sushil Tiwari Date: Thu, 12 Dec 2024 15:16:33 +0545 Subject: [PATCH] Add admin panel for localunit snapshot and restrict mutation --- local_units/admin.py | 9 +++------ local_units/test_views.py | 3 ++- local_units/views.py | 5 +++-- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/local_units/admin.py b/local_units/admin.py index 207affff1..96c6ede58 100644 --- a/local_units/admin.py +++ b/local_units/admin.py @@ -3,6 +3,8 @@ from django.core.exceptions import ValidationError from reversion_compare.admin import CompareVersionAdmin +from dref.admin import ReadOnlyMixin + from .models import ( Affiliation, BloodService, @@ -66,7 +68,7 @@ def save_model(self, request, obj, form, change): @admin.register(LocalUnitChangeRequest) -class LocalUnitChangeRequestAdmin(admin.ModelAdmin): +class LocalUnitChangeRequestAdmin(ReadOnlyMixin, admin.ModelAdmin): autocomplete_fields = ( "local_unit", "triggered_by", @@ -82,11 +84,6 @@ class LocalUnitChangeRequestAdmin(admin.ModelAdmin): "status", "current_validator", ) - readonly_fields = ( - "previous_data", - "rejected_data", - "rejected_reason", - ) ordering = ("id",) def get_queryset(self, request): diff --git a/local_units/test_views.py b/local_units/test_views.py index 27ad0e616..81a90ee12 100644 --- a/local_units/test_views.py +++ b/local_units/test_views.py @@ -87,8 +87,9 @@ def test_deprecate_local_unit(self): # Test for validation response = self.client.post(url, data=data) - self.assert_400(response) + self.assert_404(response) + self.client.force_authenticate(self.root_user) # test revert deprecate data = {} url = f"/api/v2/local-units/{local_unit_obj.id}/revert-deprecate/" diff --git a/local_units/views.py b/local_units/views.py index e20735969..fed065c9f 100644 --- a/local_units/views.py +++ b/local_units/views.py @@ -1,3 +1,4 @@ +from django.shortcuts import get_object_or_404 from django.utils import timezone from drf_spectacular.utils import extend_schema from rest_framework import permissions, response, status, views, viewsets @@ -238,11 +239,11 @@ def deprecate(self, request, pk=None): detail=True, methods=["post"], url_path="revert-deprecate", - permission_classes=[permissions.IsAuthenticated, DenyGuestUserPermission], + permission_classes=[permissions.IsAuthenticated, ValidateLocalUnitPermission, DenyGuestUserPermission], ) def revert_deprecate(self, request, pk=None): """Revert the deprecate local unit object.""" - local_unit = self.get_object() + local_unit = get_object_or_404(LocalUnit, pk=pk) local_unit.is_deprecated = False local_unit.deprecated_reason = None local_unit.deprecated_reason_overview = ""