From 1e660405ceeacfbbfde784e2e9dcf7f4d6f027fb Mon Sep 17 00:00:00 2001 From: futa-ikeda Date: Tue, 12 May 2026 15:09:30 -0400 Subject: [PATCH] WIP prevent draft_node convert_draft_node_to_node when registering --- osf/models/archive.py | 2 +- osf/models/draft_node.py | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/osf/models/archive.py b/osf/models/archive.py index 9e622764ca7..707ed296d0a 100644 --- a/osf/models/archive.py +++ b/osf/models/archive.py @@ -55,7 +55,7 @@ class ArchiveJob(ObjectIDMixin, BaseModel): dst_node = models.ForeignKey('Registration', related_name='archive_jobs', verbose_name='destination node', null=True, blank=True, on_delete=models.CASCADE) - src_node = models.ForeignKey('Node', verbose_name='source node', null=True, + src_node = models.ForeignKey('AbstractNode', verbose_name='source node', null=True, blank=True, on_delete=models.CASCADE) initiator = models.ForeignKey('OSFUser', null=True, on_delete=models.CASCADE) diff --git a/osf/models/draft_node.py b/osf/models/draft_node.py index a1b49a95cdd..8aa30c4e781 100644 --- a/osf/models/draft_node.py +++ b/osf/models/draft_node.py @@ -3,7 +3,7 @@ from framework.auth.core import Auth from django.utils import timezone -from .node import AbstractNode, Node, NodeLog +from .node import AbstractNode, NodeLog from osf.exceptions import NodeStateError @@ -26,7 +26,7 @@ def set_privacy(self, permissions, *args, **kwargs): raise NodeStateError('You may not set privacy for a DraftNode.') def clone(self): - raise NodeStateError('A DraftNode may not be forked, used as a template, or registered.') + return super().clone() # Overrides AbstractNode.update_search def update_search(self): @@ -68,9 +68,9 @@ def register_node(self, schema, auth, draft_registration, parent=None, child_ids :param parent Node: parent registration of registration to be created :param provider RegistrationProvider: provider to submit the registration to """ - self.convert_draft_node_to_node(auth) + # self.convert_draft_node_to_node(auth) # Copies editable fields from the DraftRegistration back to the Node self.copy_editable_fields(draft_registration, save=True) # Calls super on Node, since self is no longer a DraftNode - return super(Node, self).register_node(schema, auth, draft_registration, parent=parent, child_ids=child_ids, provider=provider, manual_guid=manual_guid) + return super(DraftNode, self).register_node(schema, auth, draft_registration, parent=parent, child_ids=child_ids, provider=provider, manual_guid=manual_guid)