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