@@ -117,8 +117,8 @@ class OrganizationMemberListAPI(generics.ListAPIView):
117
117
pagination_class = OrganizationMemberListPagination
118
118
119
119
def _get_created_projects_map (self ):
120
- members = self .get_queryset ()
121
- user_ids = members . values_list ( ' user_id' , flat = True )
120
+ members = self .paginate_queryset ( self . filter_queryset ( self . get_queryset ()) )
121
+ user_ids = [ member . user_id for member in members ]
122
122
projects = (
123
123
Project .objects .filter (created_by_id__in = user_ids , organization = self .request .user .active_organization )
124
124
.values ('created_by_id' , 'id' , 'title' )
@@ -135,24 +135,29 @@ def _get_created_projects_map(self):
135
135
return projects_map
136
136
137
137
def _get_contributed_to_projects_map (self ):
138
- members = self .get_queryset ()
139
- user_ids = members .values_list ('user_id' , flat = True )
140
- projects = (
141
- Annotation .objects .filter (
142
- completed_by__in = user_ids , project__organization = self .request .user .active_organization
143
- )
144
- .values ('completed_by' , 'project__id' , 'project__title' )
138
+ members = self .paginate_queryset (self .filter_queryset (self .get_queryset ()))
139
+ user_ids = [member .user_id for member in members ]
140
+ org_project_ids = Project .objects .filter (organization = self .request .user .active_organization ).values_list (
141
+ 'id' , flat = True
142
+ )
143
+ annotations = (
144
+ Annotation .objects .filter (completed_by__in = list (user_ids ), project__in = list (org_project_ids ))
145
+ .values ('completed_by' , 'project_id' )
145
146
.distinct ()
146
147
)
147
- projects_map = {}
148
- for project in projects :
149
- projects_map .setdefault (project ['completed_by' ], []).append (
148
+ project_ids = [annotation ['project_id' ] for annotation in annotations ]
149
+ projects_map = Project .objects .in_bulk (id_list = project_ids , field_name = 'id' )
150
+
151
+ contributed_to_projects_map = {}
152
+ for annotation in annotations :
153
+ project = projects_map [annotation ['project_id' ]]
154
+ contributed_to_projects_map .setdefault (annotation ['completed_by' ], []).append (
150
155
{
151
- 'id' : project [ 'project__id' ] ,
152
- 'title' : project [ 'project__title' ] ,
156
+ 'id' : project . id ,
157
+ 'title' : project . title ,
153
158
}
154
159
)
155
- return projects_map
160
+ return contributed_to_projects_map
156
161
157
162
def get_serializer_context (self ):
158
163
context = super ().get_serializer_context ()
0 commit comments