def get_pointers_to_add_remove(self, pointers, new_pointers): diff = relationship_diff( current_items={pointer.node._id: pointer for pointer in pointers}, new_items={val['node']['_id']: val for val in new_pointers} ) nodes_to_add = [] for node_id in diff['add']: node = Node.load(node_id) if not node: raise exceptions.NotFound(detail='Node with id "{}" was not found'.format(node_id)) nodes_to_add.append(node) return nodes_to_add, diff['remove'].values()
def get_nodes_to_add_remove(self, nodes, new_nodes): diff = relationship_diff( current_items={node._id: node for node in nodes}, new_items={node['_id']: node for node in new_nodes} ) nodes_to_add = [] for node_id in diff['add']: node = AbstractNode.load(node_id) if not node: raise NotFound nodes_to_add.append(node) return nodes_to_add, diff['remove'].values()
def get_institutions_to_add_remove(self, institutions, new_institutions): diff = relationship_diff( current_items={inst._id: inst for inst in institutions}, new_items={inst['_id']: inst for inst in new_institutions} ) insts_to_add = [] for inst_id in diff['add']: inst = Institution.load(inst_id) if not inst: raise exceptions.NotFound(detail='Institution with id "{}" was not found'.format(inst_id)) insts_to_add.append(inst) return insts_to_add, diff['remove'].values()
def get_providers_to_add_remove(self, providers, new_providers): diff = relationship_diff( current_items={provider._id: provider for provider in providers}, new_items={provider['_id']: provider for provider in new_providers} ) providers_to_add = [] for provider_id in diff['add']: provider = PreprintProvider.load(provider_id) if not provider: raise exceptions.NotFound(detail='PreprintProvider with id "{}" was not found'.format(provider_id)) providers_to_add.append(provider) return providers_to_add, diff['remove'].values()
def get_pointers_to_add_remove(self, pointers, new_pointers): diff = relationship_diff( current_items={pointer.node._id: pointer for pointer in pointers}, new_items={val['node']['_id']: val for val in new_pointers}) nodes_to_add = [] for node_id in diff['add']: node = Node.load(node_id) if not node: raise exceptions.NotFound( detail='Node with id "{}" was not found'.format(node_id)) nodes_to_add.append(node) return nodes_to_add, diff['remove'].values()