diff --git a/care/facility/api/serializers/shifting.py b/care/facility/api/serializers/shifting.py index 6d086013e1..71245c6034 100644 --- a/care/facility/api/serializers/shifting.py +++ b/care/facility/api/serializers/shifting.py @@ -73,6 +73,7 @@ class ShiftingSerializer(serializers.ModelSerializer): "TRANSFER IN PROGRESS", "COMPLETED", "PATIENT EXPIRED", + "CANCELLED", ] ] @@ -90,6 +91,7 @@ class ShiftingSerializer(serializers.ModelSerializer): # "TRANSFER IN PROGRESS", "COMPLETED", # "PATIENT EXPIRED", + # "CANCELLED", ] ] @@ -107,6 +109,7 @@ class ShiftingSerializer(serializers.ModelSerializer): "TRANSFER IN PROGRESS", "COMPLETED", "PATIENT EXPIRED", + "CANCELLED", ] ] @@ -124,6 +127,7 @@ class ShiftingSerializer(serializers.ModelSerializer): # "TRANSFER IN PROGRESS", "COMPLETED", # "PATIENT EXPIRED", + # "CANCELLED", ] ] @@ -211,6 +215,11 @@ def validate_shifting_approving_facility(self, value): return value def update(self, instance, validated_data): + if instance.status == REVERSE_SHIFTING_STATUS_CHOICES["CANCELLED"]: + raise ValidationError("Permission Denied, Shifting request was cancelled.") + elif instance.status == REVERSE_SHIFTING_STATUS_CHOICES["COMPLETED"]: + raise ValidationError("Permission Denied, Shifting request was completed.") + # Dont allow editing origin or patient validated_data.pop("orgin_facility") validated_data.pop("patient") @@ -233,6 +242,11 @@ def update(self, instance, validated_data): if "status" in validated_data: status = validated_data["status"] + if status == REVERSE_SHIFTING_STATUS_CHOICES[ + "CANCELLED" + ] and not has_facility_permission(user, instance.origin_facility): + raise ValidationError({"status": ["Permission Denied"]}) + if settings.PEACETIME_MODE: if ( status in self.PEACETIME_SHIFTING_STATUS diff --git a/care/facility/models/shifting.py b/care/facility/models/shifting.py index 93143106fb..385dd7d34c 100644 --- a/care/facility/models/shifting.py +++ b/care/facility/models/shifting.py @@ -22,6 +22,7 @@ (70, "TRANSFER IN PROGRESS"), (80, "COMPLETED"), (90, "PATIENT EXPIRED"), + (100, "CANCELLED"), ) VEHICLE_CHOICES = [