def test_get_file_guids_for_live_folder_wo_guids(self): node = self.node_settings.owner folder = OsfStorageFolder(name='foofolder', node=node) folder.save() files = [] for i in range(1, 4): files.append(folder.append_file('foo.{}'.format(i))) all_guids = OsfStorageFileNode.get_file_guids( '/' + folder._id, provider='osfstorage', node=node) assert [] == all_guids
def test_get_file_guids_for_live_folder_wo_guids(self): node = self.node_settings.owner folder = OsfStorageFolder(name='foofolder', target=node) folder.save() files = [] for i in range(1, 4): files.append(folder.append_file('foo.{}'.format(i))) all_guids = OsfStorageFileNode.get_file_guids( '/' + folder._id, provider='osfstorage', target=node) assert [] == all_guids
def test_move_preprint_primary_file_within_preprint(self): user = UserFactory() preprint = PreprintFactory(creator=user) preprint.save() folder = OsfStorageFolder(name='foofolder', target=preprint) folder.save() to_move = preprint.files.all()[0] assert_true(to_move.is_preprint_primary) moved = to_move.move_under(folder, name='Tuna') assert preprint.primary_file == to_move assert to_move.parent == folder assert folder.target == preprint
def test_get_file_guids_for_live_folder(self): node = self.node_settings.owner folder = OsfStorageFolder(name='foofolder', node=node) folder.save() files = [] for i in range(1, 4): files.append(folder.append_file('foo.{}'.format(i))) files[-1].get_guid(create=True) guids = [file.get_guid()._id for file in files] assert len(guids) == len(files) all_guids = OsfStorageFileNode.get_file_guids( '/' + folder._id, provider='osfstorage', node=node) assert sorted(guids) == sorted(all_guids)
def test_get_file_guids_for_live_folder(self): node = self.node_settings.owner folder = OsfStorageFolder(name='foofolder', target=node) folder.save() files = [] for i in range(1, 4): files.append(folder.append_file('foo.{}'.format(i))) files[-1].get_guid(create=True) guids = [file.get_guid()._id for file in files] assert len(guids) == len(files) all_guids = OsfStorageFileNode.get_file_guids( '/' + folder._id, provider='osfstorage', target=node) assert sorted(guids) == sorted(all_guids)
def add_quickfiles(*args, **kwargs): ids_without_quickfiles = list( OSFUser.objects.exclude( created__type=QuickFilesNode._typedmodels_type).values_list( 'id', flat=True)) users_without_quickfiles = OSFUser.objects.filter( id__in=ids_without_quickfiles).order_by('id') total_quickfiles_to_create = users_without_quickfiles.count() logger.info('About to add a QuickFilesNode for {} users.'.format( total_quickfiles_to_create)) paginated_users = Paginator(users_without_quickfiles, 1000) total_created = 0 for page_num in paginated_users.page_range: quickfiles_to_create = [] for user in paginated_users.page(page_num).object_list: quickfiles_to_create.append( QuickFilesNode(title=get_quickfiles_project_title(user), creator=user)) total_created += 1 all_quickfiles = QuickFilesNode.objects.bulk_create( quickfiles_to_create) logger.info('Created {}/{} QuickFilesNodes'.format( total_created, total_quickfiles_to_create)) logger.info('Preparing to create contributors and folders') contributors_to_create = [] osfs_folders_to_create = [] for quickfiles in all_quickfiles: ensure_guid(QuickFilesNode, quickfiles, True) osfs_folders_to_create.append( OsfStorageFolder(provider='osfstorage', name='', node=quickfiles)) contributors_to_create.append( Contributor(user=quickfiles.creator, node=quickfiles, visible=True, read=True, write=True, admin=True, _order=0)) Contributor.objects.bulk_create(contributors_to_create) OsfStorageFolder.objects.bulk_create(osfs_folders_to_create) logger.info('Contributors and addons folders') logger.info('Adding storage addons') osfs_to_create = [] for folder in osfs_folders_to_create: osfs_to_create.append( OSFSNodeSettings(owner=folder.node, root_node=folder)) OSFSNodeSettings.objects.bulk_create(osfs_to_create)
def osfstorage_get_lineage(file_node, node_addon, **kwargs): #TODO Profile list(OsfStorageFolder.find(Q('node', 'eq', node_addon.owner))) lineage = [] while file_node: lineage.append(file_node.serialize()) file_node = file_node.parent return {'data': lineage}
def test_get_file_guids_for_trashed_folder_recursive_wo_guids(self): node = self.node_settings.owner folder = OsfStorageFolder(name='foofolder', node=node) folder.save() files = [] for i in range(1, 4): files.append(folder.append_file('foo.{}'.format(i))) subfolder = folder.append_folder('subfoo') for i in range(1, 4): files.append(subfolder.append_file('subfoo.{}'.format(i))) folder.delete() all_guids = OsfStorageFileNode.get_file_guids( '/' + folder._id, provider='osfstorage', node=node) assert [] == all_guids
def wrapped(payload, *args, **kwargs): try: user = OSFUser.load(payload['user']) dest_node = AbstractNode.load(payload['destination']['node']) source = OsfStorageFileNode.get(payload['source'], kwargs['node']) dest_parent = OsfStorageFolder.get(payload['destination']['parent'], dest_node) kwargs.update({ 'user': user, 'source': source, 'destination': dest_parent, 'name': payload['destination']['name'], }) except KeyError: raise HTTPError(httplib.BAD_REQUEST) return func(*args, **kwargs)
def wrapped(payload, *args, **kwargs): try: user = OSFUser.load(payload['user']) dest_node = AbstractNode.load(payload['destination']['node']) source = OsfStorageFileNode.get(payload['source'], kwargs['node']) dest_parent = OsfStorageFolder.get( payload['destination']['parent'], dest_node) kwargs.update({ 'user': user, 'source': source, 'destination': dest_parent, 'name': payload['destination']['name'], }) except KeyError: raise HTTPError(httplib.BAD_REQUEST) return func(*args, **kwargs)
def wrapped(payload, *args, **kwargs): try: user = OSFUser.load(payload['user']) # Waterbutler is sending back ['node'] under the destination payload - WB should change to target target = payload['destination'].get('target') or payload['destination'].get('node') dest_target = Guid.load(target).referent source = OsfStorageFileNode.get(payload['source'], kwargs['target']) dest_parent = OsfStorageFolder.get(payload['destination']['parent'], dest_target) kwargs.update({ 'user': user, 'source': source, 'destination': dest_parent, 'name': payload['destination']['name'], }) except KeyError: raise HTTPError(httplib.BAD_REQUEST) return func(*args, **kwargs)
def post(self, request, *args, **kwargs): serializer = self.serializer_class(data=request.data, context=self.get_serializer_context()) if serializer.is_valid(): source = serializer.validated_data.pop('source') destination = serializer.validated_data.pop('destination') name = destination.get('name') dest_target = self.get_target(target_id=destination.get('target')) try: source = OsfStorageFileNode.get(source, self.get_object()) except OsfStorageFileNode.DoesNotExist: raise NotFound try: dest_parent = OsfStorageFolder.get(destination.get('parent'), dest_target) except OsfStorageFolder.DoesNotExist: raise NotFound serializer.save(source=source, destination=dest_parent, name=name) return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def test_get_file_guids_for_trashed_folder_recursive_wo_guids(self): node = self.node_settings.owner folder = OsfStorageFolder(name='foofolder', target=node) folder.save() files = [] for i in range(1, 4): files.append(folder.append_file('foo.{}'.format(i))) subfolder = folder.append_folder('subfoo') for i in range(1, 4): files.append(subfolder.append_file('subfoo.{}'.format(i))) folder.delete() all_guids = OsfStorageFileNode.get_file_guids( '/' + folder._id, provider='osfstorage', target=node) assert [] == all_guids
def post(self, request, *args, **kwargs): serializer = self.serializer_class( data=request.data, context=self.get_serializer_context()) if serializer.is_valid(): source = serializer.validated_data.pop('source') destination = serializer.validated_data.pop('destination') name = destination.get('name') dest_target = self.get_target(target_id=destination.get('target')) try: source = OsfStorageFileNode.get(source, self.get_object()) except OsfStorageFileNode.DoesNotExist: raise NotFound try: dest_parent = OsfStorageFolder.get(destination.get('parent'), dest_target) except OsfStorageFolder.DoesNotExist: raise NotFound serializer.save(source=source, destination=dest_parent, name=name) return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def wrapped(payload, *args, **kwargs): try: user = OSFUser.load(payload['user']) # Waterbutler is sending back ['node'] under the destination payload - WB should change to target target = payload['destination'].get( 'target') or payload['destination'].get('node') dest_target = Guid.load(target).referent source = OsfStorageFileNode.get(payload['source'], kwargs['target']) dest_parent = OsfStorageFolder.get( payload['destination']['parent'], dest_target) kwargs.update({ 'user': user, 'source': source, 'destination': dest_parent, 'name': payload['destination']['name'], }) except KeyError: raise HTTPError(httplib.BAD_REQUEST) return func(*args, **kwargs)
def create_file_node(sender, instance, **kwargs): if instance.root_folder: return # Note: The "root" node will always be "named" empty string root_folder = OsfStorageFolder(name='', target=instance, is_root=True) root_folder.save()