def create_from_node(cls, node, user, schema, data=None, provider=None): if not provider: provider = RegistrationProvider.load('osf') draft = cls( initiator=user, branched_from=node, registration_schema=schema, registration_metadata=data or {}, provider=provider, ) draft.save() return draft
def create_from_node(cls, user, schema, node=None, data=None, provider=None): if not provider: provider = RegistrationProvider.load('osf') if not node: # If no node provided, a DraftNode is created for you node = DraftNode.objects.create(creator=user, title='Untitled') if not (isinstance(node, Node) or isinstance(node, DraftNode)): raise DraftRegistrationStateError() draft = cls( initiator=user, branched_from=node, registration_schema=schema, registration_metadata=data or {}, provider=provider, ) draft.save() draft.copy_editable_fields(node, Auth(user), save=True, contributors=False) draft.update(data) return draft