From 8643fda607da6c465f573276548b11bc35496af1 Mon Sep 17 00:00:00 2001 From: Oleh Paduchak Date: Fri, 14 Nov 2025 13:45:13 +0200 Subject: [PATCH 1/2] implemented removal of contributors from all children of node --- api/nodes/views.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/api/nodes/views.py b/api/nodes/views.py index 8ae38017b17..01d8cc752ee 100644 --- a/api/nodes/views.py +++ b/api/nodes/views.py @@ -545,13 +545,17 @@ def get_serializer_context(self): return context def perform_destroy(self, instance): - node = self.get_resource() + node: Node = self.get_resource() auth = get_user_auth(self.request) if node.visible_contributors.count() == 1 and instance.visible: raise ValidationError('Must have at least one visible contributor') removed = node.remove_contributor(instance, auth) if not removed: raise ValidationError('Must have at least one registered admin contributor') + propagate = self.request.query_params.get('propagate_to_children') == 'true' + if propagate: + for child_node in node.get_nodes(_contributors__in=[instance.user]): + child_node.remove_contributor(instance, auth) class NodeImplicitContributorsList(JSONAPIBaseView, generics.ListAPIView, ListFilterMixin, NodeMixin): From c8b22199ac1425aa5b938c4462518b4c62aa54a4 Mon Sep 17 00:00:00 2001 From: Oleh Paduchak Date: Fri, 14 Nov 2025 14:01:40 +0200 Subject: [PATCH 2/2] fixed flake8 --- admin_tests/preprints/test_views.py | 1 - 1 file changed, 1 deletion(-) diff --git a/admin_tests/preprints/test_views.py b/admin_tests/preprints/test_views.py index 357ff643a06..5731c5c9aac 100644 --- a/admin_tests/preprints/test_views.py +++ b/admin_tests/preprints/test_views.py @@ -23,7 +23,6 @@ from osf.models.spam import SpamStatus from osf.utils.workflows import DefaultStates, RequestTypes from osf.utils.permissions import ADMIN -from framework.auth import Auth from admin_tests.utilities import setup_view, setup_log_view, handle_post_view_request