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

1from rest_framework import permissions, viewsets 

2 

3from api.serializers.user import CoreUserSerializer, CoreUserDataSerializer 

4 

5from core.models import user as core_user_models 

6 

7 

8class UserDataViewSet(viewsets.ModelViewSet): 

9 """ 

10 API endpoint that allows users to be viewed or edited. 

11 """ 

12 

13 queryset = core_user_models.CoreUserData.active_objects.all() 

14 serializer_class = CoreUserDataSerializer 

15 permission_classes = [permissions.IsAuthenticated] 

16 

17 

18class CoreUserViewSet(viewsets.ModelViewSet): 

19 """ 

20 API endpoint that allows users to be viewed or edited. 

21 """ 

22 

23 queryset = core_user_models.CoreUser.active_objects.all() 

24 serializer_class = CoreUserSerializer 

25 permission_classes = [permissions.IsAuthenticated] 

26 

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