Commit c11049ee by Muhammad Shoaib

Merge pull request #9439 from edx/cdodge/add-course-name

add ability to return the course name (optionally) when querying abou…
parents 1f6d28e2 ea1e875d
...@@ -10,6 +10,7 @@ from django.core.exceptions import ObjectDoesNotExist ...@@ -10,6 +10,7 @@ from django.core.exceptions import ObjectDoesNotExist
from opaque_keys.edx.keys import CourseKey from opaque_keys.edx.keys import CourseKey
from student.models import CourseEnrollment from student.models import CourseEnrollment
from xmodule.modulestore.django import modulestore
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
...@@ -47,7 +48,7 @@ class CreditService(object): ...@@ -47,7 +48,7 @@ class CreditService(object):
return is_credit_course(course_key) return is_credit_course(course_key)
def get_credit_state(self, user_id, course_key_or_id): def get_credit_state(self, user_id, course_key_or_id, return_course_name=False):
""" """
Return all information about the user's credit state inside of a given Return all information about the user's credit state inside of a given
course. course.
...@@ -64,6 +65,7 @@ class CreditService(object): ...@@ -64,6 +65,7 @@ class CreditService(object):
'profile_fullname': the name that the student registered under, used for verification 'profile_fullname': the name that the student registered under, used for verification
'is_credit_course': if the course has been marked as a credit bearing course 'is_credit_course': if the course has been marked as a credit bearing course
'credit_requirement_status': the user's status in fulfilling those requirements 'credit_requirement_status': the user's status in fulfilling those requirements
'course_name': optional display name of the course
} }
""" """
...@@ -89,13 +91,20 @@ class CreditService(object): ...@@ -89,13 +91,20 @@ class CreditService(object):
# not enrolled # not enrolled
return None return None
return { result = {
'enrollment_mode': enrollment.mode, 'enrollment_mode': enrollment.mode,
'profile_fullname': user.profile.name, 'profile_fullname': user.profile.name,
'is_credit_course': is_credit_course(course_key), 'is_credit_course': is_credit_course(course_key),
'credit_requirement_status': get_credit_requirement_status(course_key, user.username) 'credit_requirement_status': get_credit_requirement_status(course_key, user.username)
} }
if return_course_name:
course = modulestore().get_course(course_key, depth=0)
result.update({
'course_name': course.display_name,
})
return result
def set_credit_requirement_status(self, user_id, course_key_or_id, req_namespace, def set_credit_requirement_status(self, user_id, course_key_or_id, req_namespace,
req_name, status="satisfied", reason=None): req_name, status="satisfied", reason=None):
""" """
......
...@@ -121,6 +121,22 @@ class CreditServiceTests(ModuleStoreTestCase): ...@@ -121,6 +121,22 @@ class CreditServiceTests(ModuleStoreTestCase):
self.assertEqual(credit_state['credit_requirement_status'][0]['name'], 'grade') self.assertEqual(credit_state['credit_requirement_status'][0]['name'], 'grade')
self.assertEqual(credit_state['credit_requirement_status'][0]['status'], 'satisfied') self.assertEqual(credit_state['credit_requirement_status'][0]['status'], 'satisfied')
def test_course_name(self):
"""
Make sure we can get back the optional course name
"""
CourseEnrollment.enroll(self.user, self.course.id)
# make sure it is not returned by default
credit_state = self.service.get_credit_state(self.user.id, self.course.id)
self.assertNotIn('course_name', credit_state)
# now make sure it is in there when we pass in the flag
credit_state = self.service.get_credit_state(self.user.id, self.course.id, return_course_name=True)
self.assertIn('course_name', credit_state)
self.assertEqual(credit_state['course_name'], self.course.display_name)
def test_set_status_non_credit(self): def test_set_status_non_credit(self):
""" """
assert that we can still try to update a credit status but return quickly if assert that we can still try to update a credit status but return quickly if
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment