예제 #1
0
    def get_permitted_objects(cls, user):
        from waldur_core.structure.filters import filter_visible_users

        queryset = User.objects.all()
        if user.is_staff or user.is_support:
            return queryset
        else:
            return filter_visible_users(queryset, user)
예제 #2
0
 def get_queryset(self):
     visible_users = filter_visible_users(User.objects.all(),
                                          self.request.user)
     user = get_object_or_404(visible_users, uuid=self.kwargs['user_uuid'])
     return models.Answer.objects.filter(
         question__checklist__uuid=self.kwargs['checklist_uuid'],
         user=user,
     )
예제 #3
0
 def get_fields(self):
     fields = super(SshPublicKeySerializerMixin, self).get_fields()
     if 'request' in self.context:
         user = self.context['request'].user
         ssh_public_key = fields.get('ssh_public_key')
         if ssh_public_key:
             if not user.is_staff:
                 visible_users = list(filter_visible_users(User.objects.all(), user))
                 subquery = Q(user__in=visible_users) | Q(is_shared=True)
                 ssh_public_key.queryset = ssh_public_key.queryset.filter(subquery)
     return fields
예제 #4
0
 def get(self, request, user_uuid, format=None):
     visible_users = filter_visible_users(User.objects.all(),
                                          self.request.user)
     user = get_object_or_404(visible_users, uuid=user_uuid)
     visible_checklists = filter_checklists_by_roles(
         models.Checklist.objects.all(), user)
     total_count = models.Question.objects.filter(
         checklist__in=visible_checklists).count()
     correct_count = models.Answer.objects.filter(
         value=F('question__correct_answer'),
         question__checklist__in=visible_checklists,
         user=user,
     ).count()
     return Response({'score': get_score(correct_count, total_count)})