diff --git a/dojo/api_v2/serializers.py b/dojo/api_v2/serializers.py index 4fd5aad7440..34d1129107f 100644 --- a/dojo/api_v2/serializers.py +++ b/dojo/api_v2/serializers.py @@ -1158,6 +1158,7 @@ def update(self, instance, validated_data): findings_to_remove = set(existing_findings) - set(new_findings) findings_to_add = Finding.objects.filter(id__in=[x.id for x in findings_to_add]) findings_to_remove = Finding.objects.filter(id__in=[x.id for x in findings_to_remove]) + old_expiration_date = self.instance.expiration_date # Make the update in the database instance = super().update(instance, validated_data) user = getattr(self.context.get("request", None), "user", None) @@ -1167,6 +1168,9 @@ def update(self, instance, validated_data): for finding in findings_to_remove: ra_helper.remove_finding_from_risk_acceptance(user, instance, finding) + if instance.expiration_date != old_expiration_date: + ra_helper.reinstate(instance, old_expiration_date) + # Handle orphaned risk acceptances: link to engagement if it now has findings # This is fine as Pro has its own model + relationshop to track links with engagements. if instance.accepted_findings.exists() and not instance.engagement: