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)
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)
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)
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)