fix: get audit expiration from correct data source (#31238)

This commit is contained in:
Nathan Sprenkle
2022-11-01 13:40:02 -04:00
committed by GitHub
parent 5b4330fcc5
commit bfe6494e9d
3 changed files with 25 additions and 6 deletions

View File

@@ -195,11 +195,7 @@ class EnrollmentSerializer(serializers.Serializer):
isEnrolled = serializers.BooleanField(source="is_active")
def get_accessExpirationDate(self, instance):
return (
self.context.get("course_mode_info", {})
.get(instance.course_id)
.get("expiration_datetime")
)
return self.context.get("audit_access_deadlines", {}).get(instance.course_id)
def get_isAudit(self, enrollment):
return enrollment.mode in CourseMode.AUDIT_MODES

View File

@@ -321,9 +321,9 @@ class TestEnrollmentSerializer(LearnerDashboardBaseTest):
def create_test_context(self, course):
"""Get a test context object"""
return {
"audit_access_deadlines": {course.id: random_date()},
"course_mode_info": {
course.id: {
"expiration_datetime": random_date(),
"show_upsell": True,
}
},

View File

@@ -21,6 +21,9 @@ from edx_rest_framework_extensions.auth.session.authentication import (
SessionAuthenticationAllowInactiveUser,
)
from opaque_keys.edx.keys import CourseKey
from openedx.features.course_duration_limits.access import (
get_user_course_expiration_date,
)
from rest_framework.exceptions import PermissionDenied, NotFound
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
@@ -389,6 +392,22 @@ def get_course_share_urls(course_enrollments):
}
@exec_time_logged
def get_audit_access_deadlines(user, course_enrollments):
"""
Get audit access deadlines for each course enrollment
Returns:
- Dict {course_id: <datetime or None>}
"""
return {
course_enrollment.course_id: get_user_course_expiration_date(
user, course_enrollment.course
)
for course_enrollment in course_enrollments
}
class InitializeView(RetrieveAPIView): # pylint: disable=unused-argument
"""List of courses a user is enrolled in or entitled to"""
@@ -457,6 +476,9 @@ class InitializeView(RetrieveAPIView): # pylint: disable=unused-argument
user, site_org_whitelist, site_org_blacklist
)
# Get audit access deadlines
audit_access_deadlines = get_audit_access_deadlines(user, course_enrollments)
# Get email opt-outs for student
show_email_settings_for, course_optouts = get_email_settings_info(
user, course_enrollments
@@ -496,6 +518,7 @@ class InitializeView(RetrieveAPIView): # pylint: disable=unused-argument
}
context = {
"audit_access_deadlines": audit_access_deadlines,
"ecommerce_payment_page": ecommerce_payment_page,
"cert_statuses": cert_statuses,
"course_mode_info": course_mode_info,