Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions partner_catalog/api/v1/views.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"""Partner Catalog API v1 Views."""

from django.db.models import Count, OuterRef, Q, Subquery
from django.db.models import Count, F, OuterRef, Q, Subquery
from django_filters.rest_framework import DjangoFilterBackend
from edx_rest_framework_extensions.permissions import IsAuthenticated, IsStaff, IsSuperuser
from rest_framework import filters, mixins, status, viewsets
Expand Down Expand Up @@ -238,7 +238,7 @@ class CatalogLearnerViewset(InjectNestedFKMixin, viewsets.ReadOnlyModelViewSet):
Provides access to corporate partner catalog learner information.
"""

queryset = CatalogLearner.objects.select_related("catalog", "user")
queryset = CatalogLearner.objects.select_related("catalog", "user", "current_invitation")
serializer_class = CatalogLearnerSerializer
permission_classes = [IsPartnerCatalogManager]
filter_backends = [
Expand All @@ -254,6 +254,7 @@ class CatalogLearnerViewset(InjectNestedFKMixin, viewsets.ReadOnlyModelViewSet):
"accepted_at",
"removed_at",
"active",
"invite_sent_at",
]
ordering = ["id"]

Expand All @@ -269,6 +270,12 @@ def get_queryset(self):
if catalog_pk:
qs = qs.filter(catalog_id=catalog_pk)

qs = qs.annotate(
invite_sent_at=F("current_invitation__invited_at"),
accepted_at=F("current_invitation__accepted_at"),
removed_at=F("current_invitation__removed_at"),
)

enrollments_subquery = CatalogCourseEnrollment.objects.filter(
user_id=OuterRef("user_id"),
catalog_course__catalog_id=OuterRef("catalog_id"),
Expand Down