예제 #1
0
        def wrapped(*args, **kwargs):
            if preprints_valid and Preprint.load(kwargs.get('pid')):
                _inject_nodes(kwargs)

                return func(*args, **kwargs)

            if groups_valid and OSFGroup.load(kwargs.get('pid')):
                kwargs['node'] = OSFGroup.load(kwargs.get('pid'))
                return func(*args, **kwargs)

            _inject_nodes(kwargs)

            if getattr(kwargs['node'], 'is_collection',
                       True) or (getattr(kwargs['node'], 'is_quickfiles', True)
                                 and not quickfiles_valid):
                raise HTTPError(http_status.HTTP_404_NOT_FOUND)

            if not retractions_valid and getattr(kwargs['node'].retraction,
                                                 'is_retracted', False):
                raise HTTPError(
                    http_status.HTTP_400_BAD_REQUEST,
                    data=dict(
                        message_long=
                        'Viewing withdrawn registrations is not permitted'))
            else:
                return func(*args, **kwargs)
예제 #2
0
def migrate_groups(index, delete):
    logger.info('Migrating groups to index: {}'.format(index))
    groups = OSFGroup.objects.all()
    increment = 100
    paginator = Paginator(groups, increment)
    for page_number in paginator.page_range:
        logger.info('Updating page {} / {}'.format(page_number, paginator.num_pages))
        OSFGroup.bulk_update_search(paginator.page(page_number).object_list, index=index)
예제 #3
0
 def has_object_permission(self, request, view, obj):
     if not isinstance(obj, OSFGroup):
         obj = OSFGroup.load(request.parser_context['kwargs']['group_id'])
     assert_resource_type(obj, self.acceptable_models)
     auth = get_user_auth(request)
     if request.method in permissions.SAFE_METHODS:
         return True
     elif request.method == 'DELETE':
         user = OSFUser.load(request.parser_context['kwargs']['user_id'])
         # You must have manage permissions on the OSFGroup to remove a member,
         # unless you are removing yourself
         return obj.has_permission(auth.user, MANAGE) or auth.user == user
     else:
         return auth.user and obj.has_permission(auth.user, MANAGE)
예제 #4
0
def update_group_async(self,
                       group_id,
                       index=None,
                       bulk=False,
                       deleted_id=None):
    OSFGroup = apps.get_model('osf.OSFGroup')
    group = OSFGroup.load(group_id)
    try:
        update_group(group=group,
                     index=index,
                     bulk=bulk,
                     async_update=True,
                     deleted_id=deleted_id)
    except Exception as exc:
        self.retry(exc=exc)