Exemple #1
0
    def create(self, validated_data):
        auth = get_user_auth(self.context['request'])
        user_id = validated_data.pop('_id', '')
        address = validated_data.pop('email', '')
        provider = self.context['provider']
        context = {'referrer': auth.user}
        if user_id and address:
            raise ValidationError('Cannot specify both "id" and "email".')

        user = None
        if user_id:
            user = OSFUser.load(user_id)
        elif address:
            try:
                email = Email.objects.get(address=address.lower())
            except Email.DoesNotExist:
                full_name = validated_data.pop('fullname', '')
                if not full_name:
                    raise ValidationError(
                        '"full_name" is required when adding a moderator via email.'
                    )
                user = OSFUser.create_unregistered(full_name, email=address)
                user.add_unclaimed_record(provider,
                                          referrer=auth.user,
                                          given_name=full_name,
                                          email=address)
                user.save()
                claim_url = user.get_claim_url(provider._id, external=True)
                context['claim_url'] = claim_url
            else:
                user = email.user
        else:
            raise ValidationError('Must specify either "id" or "email".')

        if not user:
            raise ValidationError('Unable to find specified user.')
        context['user'] = user
        context['provider'] = provider

        if bool(get_perms(user, provider)):
            raise ValidationError('Specified user is already a moderator.')
        if 'claim_url' in context:
            template = mails.CONFIRM_EMAIL_MODERATION(provider)
        else:
            template = mails.MODERATOR_ADDED(provider)

        perm_group = validated_data.pop('permission_group', '')
        if perm_group not in GROUPS:
            raise ValidationError('Unrecognized permission_group')
        context[
            'notification_settings_url'] = '{}reviews/preprints/{}/notifications'.format(
                DOMAIN, provider._id)
        context['provider_name'] = provider.name
        context['is_reviews_moderator_notification'] = True
        context['is_admin'] = perm_group == 'admin'

        provider.add_to_group(user, perm_group)
        setattr(user, 'permission_group', perm_group)  # Allows reserialization
        mails.send_mail(user.username, template, mimetype='html', **context)
        return user
Exemple #2
0
    def get_queryset(self):
        user = OSFUser.load(self.kwargs.get('user_id', None))

        return Comment.objects.filter(
            spam_status=int(self.request.GET.get('status', '1')),
            user=user
        ).exclude(reports={}).exclude(reports=None).order_by(self.ordering)
Exemple #3
0
 def get_object(self, queryset=None):
     user = OSFUser.load(self.kwargs.get('guid'))
     if user:
         return user
     else:
         raise Http404('{} with id "{}" not found.'.format(
             self.context_object_name.title(), self.kwargs.get('guid')))
Exemple #4
0
 def dispatch(self, request, *args, **kwargs):
     self.user = OSFUser.load(self.kwargs.get('guid'))
     if self.user is None:
         raise Http404('{} with id "{}" not found.'.format(
             self.context_object_name.title(), self.kwargs.get('guid')))
     return super(ResetPasswordView, self).dispatch(request, *args,
                                                    **kwargs)
Exemple #5
0
    def form_valid(self, form):
        osf_id = form.cleaned_data.get('osf_id')
        osf_user = OSFUser.load(osf_id)

        if not osf_user:
            raise Http404('OSF user with id "{}" not found. Please double check.'.format(osf_id))

        osf_user.is_staff = True
        osf_user.save()

        # create AdminProfile for this new user
        profile, created = AdminProfile.objects.get_or_create(user=osf_user)

        osf_user.groups.clear()
        prereg_admin_group = Group.objects.get(name='prereg_admin')
        for group in form.cleaned_data.get('group_perms'):
            osf_user.groups.add(group)
            if group == prereg_admin_group:
                osf_user.add_system_tag(PREREG_ADMIN_TAG)

        osf_user.save()

        if created:
            messages.success(self.request, 'Registration successful for OSF User {}!'.format(osf_user.username))
        else:
            messages.success(self.request, 'Permissions update successful for OSF User {}!'.format(osf_user.username))
        return super(RegisterUser, self).form_valid(form)
    def delete(self, request, *args, **kwargs):
        if not request.user.has_perm('osf.mark_spam'):
            raise PermissionDenied(
                "You don't have permission to update this user's spam status.")

        user_ids = []
        for key in list(request.POST.keys()):
            if key == 'spam_confirm':
                action = 'SPAM'
                action_flag = CONFIRM_SPAM
            elif key == 'ham_confirm':
                action = 'HAM'
                action_flag = CONFIRM_HAM
            elif key != 'csrfmiddlwaretoken':
                user_ids.append(key)

        for uid in user_ids:
            user = OSFUser.load(uid)

            if action == 'SPAM':
                user.confirm_spam()
            elif action == 'HAM':
                user.confirm_ham(save=True)

            user.save()
            update_admin_log(user_id=self.request.user.id,
                             object_id=uid,
                             object_repr='User',
                             message=f'Confirmed {action}: {uid}',
                             action_flag=action_flag)
        return redirect('users:flagged-spam')
Exemple #7
0
    def form_valid(self, form):
        guid = form.cleaned_data['guid']
        name = form.cleaned_data['name']
        email = form.cleaned_data['email']
        if name:
            return redirect(reverse('users:search-list', kwargs={'name':
                                                                 name}))

        if email:
            user = get_user(email)
            if not user:
                return page_not_found(
                    self.request,
                    AttributeError(f'resource with id "{email}" not found.'))
            return redirect(reverse('users:user', kwargs={'guid': user._id}))

        if guid:
            user = OSFUser.load(guid)
            if not user:
                return page_not_found(
                    self.request,
                    AttributeError(f'resource with id "{guid}" not found.'))

            return redirect(reverse('users:user', kwargs={'guid': guid}))

        return super().form_valid(form)
Exemple #8
0
    def form_valid(self, form):
        osf_id = form.cleaned_data.get('osf_id')
        osf_user = OSFUser.load(osf_id)

        if not osf_user:
            raise Http404('OSF user with id "{}" not found. Please double check.'.format(osf_id))

        osf_user.is_staff = True
        osf_user.save()

        # create AdminProfile for this new user
        profile, created = AdminProfile.objects.get_or_create(user=osf_user)

        for group in form.cleaned_data.get('group_perms'):
            osf_user.groups.add(group)
            split = group.name.split('_')
            group_type = split[0]
            if group_type == 'reviews':
                provider_id = split[2]
                provider = AbstractProvider.objects.get(id=provider_id)
                provider.notification_subscriptions.get(event_name='new_pending_submissions').add_user_to_subscription(osf_user, 'email_transactional')

        osf_user.save()

        if created:
            messages.success(self.request, 'Registration successful for OSF User {}!'.format(osf_user.username))
        else:
            messages.success(self.request, 'Permissions update successful for OSF User {}!'.format(osf_user.username))
        return super(RegisterUser, self).form_valid(form)
Exemple #9
0
    def form_valid(self, form):
        osf_id = form.cleaned_data.get('osf_id')
        osf_user = OSFUser.load(osf_id)

        if not osf_user:
            raise Http404(
                'OSF user with id "{}" not found. Please double check.'.format(
                    osf_id))

        osf_user.is_staff = True
        osf_user.save()

        # create AdminProfile for this new user
        profile, created = AdminProfile.objects.get_or_create(user=osf_user)

        osf_user.groups.clear()
        prereg_admin_group = Group.objects.get(name='prereg_admin')
        for group in form.cleaned_data.get('group_perms'):
            osf_user.groups.add(group)
            if group == prereg_admin_group:
                osf_user.add_system_tag(PREREG_ADMIN_TAG)

        osf_user.save()

        if created:
            messages.success(
                self.request,
                'Registration successful for OSF User {}!'.format(
                    osf_user.username))
        else:
            messages.success(
                self.request,
                'Permissions update successful for OSF User {}!'.format(
                    osf_user.username))
        return super(RegisterUser, self).form_valid(form)
Exemple #10
0
    def form_valid(self, form):
        osf_id = form.cleaned_data.get('osf_id')
        osf_user = OSFUser.load(osf_id)

        if not osf_user:
            raise Http404('OSF user with id "{}" not found. Please double check.'.format(osf_id))

        osf_user.is_staff = True
        osf_user.save()

        # create AdminProfile for this new user
        profile, created = AdminProfile.objects.get_or_create(user=osf_user)

        osf_user.groups.clear()
        prereg_admin_group = Group.objects.get(name='prereg_admin')
        for group in form.cleaned_data.get('group_perms'):
            osf_user.groups.add(group)
            split = group.name.split('_')
            group_type = split[0]
            if group_type == 'reviews':
                provider_id = split[1]
                provider = PreprintProvider.load(provider_id)
                provider.notification_subscriptions.get(event_name='new_pending_submissions').add_user_to_subscription(osf_user, 'email_transactional')
            if group == prereg_admin_group:
                administer_permission = Permission.objects.get(codename='administer_prereg')
                osf_user.user_permissions.add(administer_permission)

        osf_user.save()

        if created:
            messages.success(self.request, 'Registration successful for OSF User {}!'.format(osf_user.username))
        else:
            messages.success(self.request, 'Permissions update successful for OSF User {}!'.format(osf_user.username))
        return super(RegisterUser, self).form_valid(form)
Exemple #11
0
 def get_object(self, queryset=None):
     customer_id = self.kwargs.get('user_id', None)
     customer = OSFUser.load(customer_id)
     email = customer.emails.values_list('address', flat=True).first()
     desk = DeskClient(self.request.user)
     params = {'email': email}
     customer = desk.find_customer(params)
     return customer
Exemple #12
0
 def get_object(self, queryset=None):
     customer_id = self.kwargs.get('user_id', None)
     customer = OSFUser.load(customer_id)
     email = customer.emails.values_list('address', flat=True).first()
     desk = DeskClient(self.request.user)
     params = {'email': email}
     customer = desk.find_customer(params)
     return customer
Exemple #13
0
 def get_object(self, queryset=None):
     customer_id = self.kwargs.get('user_id', None)
     customer = OSFUser.load(customer_id)
     email = customer.emails[0]
     desk = DeskClient(self.request.user)
     params = {'email': email}
     customer = desk.find_customer(params)
     return customer
Exemple #14
0
 def get_context_data(self, **kwargs):
     user = OSFUser.load(self.kwargs.get('guid'))
     try:
         self.initial.setdefault('emails', [(r, r) for r in user.emails])
     except AttributeError:
         raise Http404('{} with id "{}" not found.'.format(
             self.context_object_name.title(), self.kwargs.get('guid')))
     kwargs.setdefault('guid', user._id)
     return super(ResetPasswordView, self).get_context_data(**kwargs)
Exemple #15
0
    def get_context_data(self, **kwargs):
        user = OSFUser.load(self.kwargs.get('guid'))

        kwargs['user_link'] = self.get_link(user)
        kwargs['username'] = user.username
        kwargs['title'] = self.get_link_type()
        kwargs['node_claim_links'] = self.get_claim_links(user)

        return super(GetUserLink, self).get_context_data(**kwargs)
Exemple #16
0
 def dispatch(self, request, *args, **kwargs):
     self.user = OSFUser.load(self.kwargs.get('guid'))
     if self.user is None:
         raise Http404(
             '{} with id "{}" not found.'.format(
                 self.context_object_name.title(),
                 self.kwargs.get('guid')
             ))
     return super(ResetPasswordView, self).dispatch(request, *args, **kwargs)
Exemple #17
0
    def get_context_data(self, **kwargs):
        user = OSFUser.load(self.kwargs.get('guid'))

        kwargs['user_link'] = self.get_link(user)
        kwargs['username'] = user.username
        kwargs['title'] = self.get_link_type()
        kwargs['node_claim_links'] = self.get_claim_links(user)

        return super(GetUserLink, self).get_context_data(**kwargs)
Exemple #18
0
 def get_queryset(self):
     customer_id = self.kwargs.get('user_id', None)
     customer = OSFUser.load(customer_id)
     email = customer.emails.values_list('address', flat=True).first()
     desk = DeskClient(self.request.user)
     params = {
         'email': email,
     }
     queryset = desk.cases(params)
     return queryset
Exemple #19
0
 def get_queryset(self):
     customer_id = self.kwargs.get('user_id', None)
     customer = OSFUser.load(customer_id)
     email = customer.emails[0]
     desk = DeskClient(self.request.user)
     params = {
         'email': email,
     }
     queryset = desk.cases(params)
     return queryset
Exemple #20
0
 def get_queryset(self):
     customer_id = self.kwargs.get('user_id', None)
     customer = OSFUser.load(customer_id)
     email = customer.emails.values_list('address', flat=True).first()
     desk = DeskClient(self.request.user)
     params = {
         'email': email,
     }
     queryset = desk.cases(params)
     return queryset
def user_last_access_get_latest():
    from osf.models.user import OSFUser

    latest = dt.datetime.min
    for user in OSFUser.find():
        if not hasattr(user, 'date_last_access'):
            continue
        elif type(user.date_last_access) is not dt.datetime:
            continue
        elif user.date_last_access > latest:
            latest = user.date_last_access
    return latest
Exemple #22
0
    def get_context_data(self, **kwargs):
        kwargs = super(UserView, self).get_context_data(**kwargs)
        kwargs.update({'SPAM_STATUS':
                       SpamStatus})  # Pass spam status in to check against
        user = OSFUser.load(
            self.kwargs.get('guid'))  # Pull User for Node/Preprints

        preprint_queryset = user.preprints.filter(
            deleted=None).order_by('title')
        node_queryset = user.contributor_or_group_member_to.order_by('title')
        kwargs = self.get_paginated_queryset(preprint_queryset, 'preprint',
                                             serialize_simple_preprint,
                                             **kwargs)
        kwargs = self.get_paginated_queryset(node_queryset, 'node',
                                             serialize_simple_node, **kwargs)

        return kwargs
Exemple #23
0
 def delete(self, request, *args, **kwargs):
     if not request.user.get_perms('osf.mark_spam'):
         raise PermissionDenied(
             "You don't have permission to update this user's spam status.")
     user_ids = [
         uid for uid in request.POST.keys() if uid != 'csrfmiddlewaretoken'
     ]
     for uid in user_ids:
         user = OSFUser.load(uid)
         if 'spam_flagged' in user.system_tags:
             user.system_tags.remove('spam_flagged')
         user.add_system_tag('spam_confirmed')
         user.save()
         update_admin_log(user_id=self.request.user.id,
                          object_id=uid,
                          object_repr='User',
                          message='Confirmed SPAM: {}'.format(uid),
                          action_flag=CONFIRM_SPAM)
     return redirect('users:flagged-spam')
Exemple #24
0
 def delete(self, request, *args, **kwargs):
     if not request.user.get_perms('osf.mark_spam'):
         raise PermissionDenied("You don't have permission to update this user's spam status.")
     user_ids = [
         uid for uid in request.POST.keys()
         if uid != 'csrfmiddlewaretoken'
     ]
     for uid in user_ids:
         user = OSFUser.load(uid)
         if 'spam_flagged' in user.system_tags:
             user.system_tags.remove('spam_flagged')
         user.add_system_tag('spam_confirmed')
         user.save()
         update_admin_log(
             user_id=self.request.user.id,
             object_id=uid,
             object_repr='User',
             message='Confirmed SPAM: {}'.format(uid),
             action_flag=CONFIRM_SPAM
         )
     return redirect('users:flagged-spam')
Exemple #25
0
 def get_user(self, user_id):
     try:
         user = OSFUser.objects.get(id=user_id)
     except OSFUser.DoesNotExist:
         user = OSFUser.load(user_id)
     return user
Exemple #26
0
 def get_object(self, queryset=None):
     return (Node.load(self.kwargs.get('node_id')),
             OSFUser.load(self.kwargs.get('user_id')))
Exemple #27
0
 def get_object(self, queryset=None):
     return (Node.load(self.kwargs.get('guid')),
             OSFUser.load(self.kwargs.get('user_id')))
Exemple #28
0
 def get_object(self, queryset=None):
     return serialize_user(OSFUser.load(self.kwargs.get('guid')))
Exemple #29
0
 def get_object(self, queryset=None):
     return OSFUser.load(self.kwargs.get('guid'))
Exemple #30
0
    def create(self, validated_data):
        auth = get_user_auth(self.context['request'])
        user_id = validated_data.pop('_id', '')
        address = validated_data.pop('email', '')
        provider = self.context['provider']
        context = {
            'referrer': auth.user
        }
        if user_id and address:
            raise ValidationError('Cannot specify both "id" and "email".')

        user = None
        if user_id:
            user = OSFUser.load(user_id)
        elif address:
            try:
                email = Email.objects.get(address=address.lower())
            except Email.DoesNotExist:
                full_name = validated_data.pop('fullname', '')
                if not full_name:
                    raise ValidationError('"full_name" is required when adding a moderator via email.')
                user = OSFUser.create_unregistered(full_name, email=address)
                user.add_unclaimed_record(provider, referrer=auth.user,
                                                 given_name=full_name, email=address)
                user.save()
                claim_url = user.get_claim_url(provider._id, external=True)
                context['claim_url'] = claim_url
            else:
                user = email.user
        else:
            raise ValidationError('Must specify either "id" or "email".')

        if not user:
            raise ValidationError('Unable to find specified user.')
        context['user'] = user
        context['provider'] = provider

        if bool(get_perms(user, provider)):
            raise ValidationError('Specified user is already a moderator.')
        if 'claim_url' in context:
            template = mails.CONFIRM_EMAIL_MODERATION(provider)
        else:
            template = mails.MODERATOR_ADDED(provider)

        perm_group = validated_data.pop('permission_group', '')
        if perm_group not in GROUPS:
            raise ValidationError('Unrecognized permission_group')
        context['notification_settings_url'] = '{}reviews/preprints/{}/notifications'.format(DOMAIN, provider._id)
        context['provider_name'] = provider.name
        context['is_reviews_moderator_notification'] = True
        context['is_admin'] = perm_group == 'admin'

        provider.add_to_group(user, perm_group)
        setattr(user, 'permission_group', perm_group)  # Allows reserialization
        mails.send_mail(
            user.username,
            template,
            mimetype='html',
            **context
        )
        return user
Exemple #31
0
 def get_object(self, queryset=None):
     return OSFUser.load(self.kwargs.get('guid'))
Exemple #32
0
 def get_object(self, queryset=None):
     return serialize_user(OSFUser.load(self.kwargs.get('guid')))