Skip to content

Commit 17b3fb3

Browse files
xirdnehjohanseto
authored andcommitted
feat: submision history endpoint from koa nelp
(BB-1389) Update enrollment serializer and Add problem submission history endpoint Squashed all commits from https://github.com/edx/edx-platform/pull/20948 (cherry picked from commit c102e41c6d92e5fb7db66de4d3624f03da213631) This cherry-pick was modified and updated to work with mango.
1 parent a0da4a9 commit 17b3fb3

File tree

7 files changed

+723
-23
lines changed

7 files changed

+723
-23
lines changed

lms/djangoapps/courseware/access_utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ def check_start_date(user, days_early_for_beta, start, course_key, display_error
7575
Returns:
7676
AccessResponse: Either ACCESS_GRANTED or StartDateError.
7777
"""
78-
start_dates_disabled = settings.FEATURES['DISABLE_START_DATES']
78+
start_dates_disabled = settings.FEATURES.get('DISABLE_START_DATES', False)
7979
masquerading_as_student = is_masquerading_as_student(user, course_key)
8080

8181
if start_dates_disabled and not masquerading_as_student:

lms/envs/test.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -586,6 +586,21 @@
586586

587587
RATELIMIT_RATE = '2/m'
588588

589+
590+
COURSE_ENROLLMENT_MODES['test'] = {
591+
"id": 8,
592+
"slug": u"test",
593+
"display_name": u"Test",
594+
"min_price": 0
595+
}
596+
597+
COURSE_ENROLLMENT_MODES['test_mode'] = {
598+
"id": 9,
599+
"slug": u"test_mode",
600+
"display_name": u"Test Mode",
601+
"min_price": 0
602+
}
603+
589604
##### LOGISTRATION RATE LIMIT SETTINGS #####
590605
LOGISTRATION_RATELIMIT_RATE = '5/5m'
591606
LOGISTRATION_PER_EMAIL_RATELIMIT_RATE = '6/5m'

openedx/core/djangoapps/enrollments/serializers.py

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99

1010
from common.djangoapps.course_modes.models import CourseMode
1111
from common.djangoapps.student.models import CourseEnrollment
12+
from lms.djangoapps.grades.course_grade_factory import CourseGradeFactory
13+
from xmodule.modulestore.django import modulestore
14+
from django.core.exceptions import PermissionDenied
1215

1316
log = logging.getLogger(__name__)
1417

@@ -83,15 +86,49 @@ class CourseEnrollmentSerializer(serializers.ModelSerializer):
8386
8487
"""
8588
course_details = CourseSerializer(source="course_overview")
86-
user = serializers.SerializerMethodField('get_username')
89+
user = serializers.SerializerMethodField("get_username")
90+
finished = serializers.SerializerMethodField()
91+
grading = serializers.SerializerMethodField()
8792

8893
def get_username(self, model):
8994
"""Retrieves the username from the associated model."""
9095
return model.username
9196

92-
class Meta:
97+
def get_finished(self, model):
98+
"""Retrieve finished course."""
99+
course = modulestore().get_course(model.course_id)
100+
if course:
101+
try:
102+
coursegrade = CourseGradeFactory().read(model.user, course).passed
103+
except PermissionDenied:
104+
return False
105+
return coursegrade
106+
return False
107+
108+
def get_grading(self, model):
109+
"""Retrieve course grade."""
110+
course = modulestore().get_course(model.course_id)
111+
course_grade = None
112+
summary = []
113+
current_grade = 0
114+
if course:
115+
try:
116+
course_grade = CourseGradeFactory().read(model.user, course)
117+
current_grade = int(course_grade.percent * 100)
118+
for section in course_grade.summary.get(u'section_breakdown'):
119+
if section.get(u'prominent'):
120+
summary.append(section)
121+
except PermissionDenied:
122+
pass
123+
return [
124+
{u'current_grade': current_grade,
125+
u'certificate_eligible': course_grade.passed if course_grade else False,
126+
u'summary': summary}
127+
]
128+
129+
class Meta(object):
93130
model = CourseEnrollment
94-
fields = ('created', 'mode', 'is_active', 'course_details', 'user')
131+
fields = ('created', 'mode', 'is_active', 'course_details', 'user', 'finished', 'grading')
95132
lookup_field = 'username'
96133

97134

0 commit comments

Comments
 (0)