Skip to content

Commit 9ac4c30

Browse files
Merge branch 'develop' into 'fb-dia-1980'
Workflow run: https://github.com/HumanSignal/label-studio/actions/runs/14893648517
2 parents c34e5ad + 3d311d6 commit 9ac4c30

File tree

1 file changed

+20
-15
lines changed
  • label_studio/organizations

1 file changed

+20
-15
lines changed

label_studio/organizations/api.py

+20-15
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,8 @@ class OrganizationMemberListAPI(generics.ListAPIView):
117117
pagination_class = OrganizationMemberListPagination
118118

119119
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]
122122
projects = (
123123
Project.objects.filter(created_by_id__in=user_ids, organization=self.request.user.active_organization)
124124
.values('created_by_id', 'id', 'title')
@@ -135,24 +135,29 @@ def _get_created_projects_map(self):
135135
return projects_map
136136

137137
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')
145146
.distinct()
146147
)
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(
150155
{
151-
'id': project['project__id'],
152-
'title': project['project__title'],
156+
'id': project.id,
157+
'title': project.title,
153158
}
154159
)
155-
return projects_map
160+
return contributed_to_projects_map
156161

157162
def get_serializer_context(self):
158163
context = super().get_serializer_context()

0 commit comments

Comments
 (0)