def _copyFolder(syn, entity, destinationId, mapping=None, skipCopyAnnotations=False, **kwargs): """ Copies synapse folders :param entity: A synapse ID of a Folder entity :param destinationId: Synapse ID of a project/folder that the folder wants to be copied to :param skipCopyAnnotations: Skips copying the annotations Default is False """ oldFolder = syn.get(entity) updateExisting = kwargs.get('updateExisting', False) if mapping is None: mapping = dict() # CHECK: If Folder name already exists, raise value error if not updateExisting: existingEntity = syn.findEntityId(oldFolder.name, parent=destinationId) if existingEntity is not None: raise ValueError('An entity named "%s" already exists in this location. Folder could not be copied' % oldFolder.name) newFolder = Folder(name=oldFolder.name, parent=destinationId) if not skipCopyAnnotations: newFolder.annotations = oldFolder.annotations newFolder = syn.store(newFolder) entities = syn.getChildren(entity) for ent in entities: _copyRecursive(syn, ent['id'], newFolder.id, mapping, skipCopyAnnotations=skipCopyAnnotations, **kwargs) return newFolder.id
def _copyFolder(syn, entity, destinationId, mapping=dict(), **kwargs): """ Copies synapse folders :param entity: A synapse ID of a Folder entity :param destinationId: Synapse ID of a project/folder that the folder wants to be copied to :param excludeTypes: Accepts a list of entity types (file, table, link) which determines which entity types to not copy. Defaults to an empty list. """ oldFolder = syn.get(entity) #CHECK: If Folder name already exists, raise value error search = syn.query('select name from entity where parentId == "%s"' % destinationId) for i in search['results']: if i['entity.name'] == oldFolder.name: raise ValueError('An item named "%s" already exists in this location. Folder could not be copied'%oldFolder.name) newFolder = Folder(name = oldFolder.name,parent= destinationId) newFolder.annotations = oldFolder.annotations newFolder = syn.store(newFolder) entities = syn.chunkedQuery('select id, name from entity where parentId=="%s"'% entity) for ent in entities: copied = _copyRecursive(syn, ent['entity.id'],newFolder.id,mapping, **kwargs) return(newFolder.id)