feat: [FC-0031] Add optional field 'is_enrolled' to course detail view

This commit is contained in:
KyryloKireiev
2023-10-31 16:02:36 +02:00
parent d7b7f7070f
commit bd5386356a
2 changed files with 54 additions and 0 deletions

View File

@@ -5,6 +5,8 @@ Course API Serializers. Representing course catalog data
import urllib
from common.djangoapps.student.models import CourseEnrollment
from django.contrib.auth import get_user_model
from django.urls import reverse
from edx_django_utils import monitoring as monitoring_utils
from rest_framework import serializers
@@ -164,10 +166,19 @@ class CourseDetailSerializer(CourseSerializer): # pylint: disable=abstract-meth
"""
Get the `certificate_available_date` in response
if the `certificates.auto_certificate_generation` waffle switch is enabled
Get the 'is_enrolled' in response
if user is authenticated and 'username' is in query params.
"""
response = super().to_representation(instance)
if can_show_certificate_available_date_field(instance):
response['certificate_available_date'] = instance.certificate_available_date
requested_user = self.context['request'].query_params.get('username', None)
if self.context['request'].user.is_authenticated and requested_user:
User = get_user_model()
requested_user = User.objects.get(username=requested_user)
response['is_enrolled'] = CourseEnrollment.is_enrolled(requested_user, instance.id)
return response