diff --git a/partner_catalog/api/v1/views.py b/partner_catalog/api/v1/views.py index 89968b2..3ca026d 100644 --- a/partner_catalog/api/v1/views.py +++ b/partner_catalog/api/v1/views.py @@ -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 @@ -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 = [ @@ -254,6 +254,7 @@ class CatalogLearnerViewset(InjectNestedFKMixin, viewsets.ReadOnlyModelViewSet): "accepted_at", "removed_at", "active", + "invite_sent_at", ] ordering = ["id"] @@ -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"),