Coverage for api/views/user.py: 100.00%
18 statements
« prev ^ index » next coverage.py v7.8.0, created at 2025-06-06 22:17 +0000
« prev ^ index » next coverage.py v7.8.0, created at 2025-06-06 22:17 +0000
1from rest_framework import permissions, viewsets
3from api.serializers.user import CoreUserSerializer, CoreUserDataSerializer
5from core.models import user as core_user_models
8class UserDataViewSet(viewsets.ModelViewSet):
9 """
10 API endpoint that allows users to be viewed or edited.
11 """
13 queryset = core_user_models.CoreUserData.active_objects.all()
14 serializer_class = CoreUserDataSerializer
15 permission_classes = [permissions.IsAuthenticated]
18class CoreUserViewSet(viewsets.ModelViewSet):
19 """
20 API endpoint that allows users to be viewed or edited.
21 """
23 queryset = core_user_models.CoreUser.active_objects.all()
24 serializer_class = CoreUserSerializer
25 permission_classes = [permissions.IsAuthenticated]
27 # TODO: Limit this list to only the users in the organizations the user is a member of
28 def get_queryset(self):
29 logged_in_user = core_user_models.CoreUser.active_objects.get(user__username=self.request.user)
30 # Get unique users from owned organizations and projects
31 organization_users = logged_in_user.organizationmembers_set.values_list('members', flat=True)
32 # breakpoint()
33 project_users = logged_in_user.list_projects().values_list('users', flat=True)
34 # Managing users of an organization is a different view
35 # Combine the user IDs and get distinct users
36 user_ids = set(organization_users).union(set(project_users))
37 users = core_user_models.CoreUser.objects.filter(id__in=user_ids)
38 return users.all()