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)
Exemple #2
0
    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
Exemple #3
0
    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
Exemple #4
0
    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)
Exemple #5
0
    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
Exemple #6
0
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()