Merge pull request #10215 from edx/ziafazal/SOL-1317
SOL-1317: check MILESTONES_APP also when checking prerequisite courses enabled
This commit is contained in:
@@ -24,6 +24,14 @@ def get_namespace_choices():
|
||||
return NAMESPACE_CHOICES
|
||||
|
||||
|
||||
def is_prerequisite_courses_enabled():
|
||||
"""
|
||||
Returns boolean indicating prerequisite courses enabled system wide or not.
|
||||
"""
|
||||
return settings.FEATURES.get('ENABLE_PREREQUISITE_COURSES', False) \
|
||||
and settings.FEATURES.get('MILESTONES_APP', False)
|
||||
|
||||
|
||||
def add_prerequisite_course(course_key, prerequisite_course_key):
|
||||
"""
|
||||
It would create a milestone, then it would set newly created
|
||||
@@ -31,7 +39,7 @@ def add_prerequisite_course(course_key, prerequisite_course_key):
|
||||
and it would set newly created milestone as fulfillment
|
||||
milestone for course referred by `prerequisite_course_key`.
|
||||
"""
|
||||
if not settings.FEATURES.get('ENABLE_PREREQUISITE_COURSES', False):
|
||||
if not is_prerequisite_courses_enabled():
|
||||
return None
|
||||
from milestones import api as milestones_api
|
||||
milestone_name = _('Course {course_id} requires {prerequisite_course_id}').format(
|
||||
@@ -55,7 +63,7 @@ def remove_prerequisite_course(course_key, milestone):
|
||||
It would remove pre-requisite course milestone for course
|
||||
referred by `course_key`.
|
||||
"""
|
||||
if not settings.FEATURES.get('ENABLE_PREREQUISITE_COURSES', False):
|
||||
if not is_prerequisite_courses_enabled():
|
||||
return None
|
||||
from milestones import api as milestones_api
|
||||
milestones_api.remove_course_milestone(
|
||||
@@ -71,7 +79,7 @@ def set_prerequisite_courses(course_key, prerequisite_course_keys):
|
||||
To only remove course milestones pass `course_key` and empty list or
|
||||
None as `prerequisite_course_keys` .
|
||||
"""
|
||||
if not settings.FEATURES.get('ENABLE_PREREQUISITE_COURSES', False):
|
||||
if not is_prerequisite_courses_enabled():
|
||||
return None
|
||||
from milestones import api as milestones_api
|
||||
#remove any existing requirement milestones with this pre-requisite course as requirement
|
||||
@@ -104,7 +112,7 @@ def get_pre_requisite_courses_not_completed(user, enrolled_courses): # pylint:
|
||||
If a course has no incomplete prerequisites, it will be excluded from the
|
||||
dictionary.
|
||||
"""
|
||||
if not settings.FEATURES.get('ENABLE_PREREQUISITE_COURSES', False):
|
||||
if not is_prerequisite_courses_enabled():
|
||||
return {}
|
||||
|
||||
from milestones import api as milestones_api
|
||||
@@ -137,7 +145,7 @@ def get_prerequisite_courses_display(course_descriptor):
|
||||
and course display name as `display` field.
|
||||
"""
|
||||
pre_requisite_courses = []
|
||||
if settings.FEATURES.get('ENABLE_PREREQUISITE_COURSES', False) and course_descriptor.pre_requisite_courses:
|
||||
if is_prerequisite_courses_enabled() and course_descriptor.pre_requisite_courses:
|
||||
for course_id in course_descriptor.pre_requisite_courses:
|
||||
course_key = CourseKey.from_string(course_id)
|
||||
required_course_descriptor = modulestore().get_course(course_key)
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
Tests for the milestones helpers library, which is the integration point for the edx_milestones API
|
||||
"""
|
||||
|
||||
import ddt
|
||||
from mock import patch
|
||||
|
||||
from milestones.exceptions import InvalidCourseKeyException, InvalidUserException
|
||||
@@ -11,6 +12,7 @@ from xmodule.modulestore.tests.factories import CourseFactory
|
||||
|
||||
|
||||
@patch.dict('django.conf.settings.FEATURES', {'MILESTONES_APP': False})
|
||||
@ddt.ddt
|
||||
class MilestonesHelpersTestCase(ModuleStoreTestCase):
|
||||
"""
|
||||
Main test suite for Milestones API client library
|
||||
@@ -35,6 +37,24 @@ class MilestonesHelpersTestCase(ModuleStoreTestCase):
|
||||
'description': 'Testing Milestones Helpers Library',
|
||||
}
|
||||
|
||||
@ddt.data(
|
||||
(False, False, False),
|
||||
(True, False, False),
|
||||
(False, True, False),
|
||||
(True, True, True),
|
||||
)
|
||||
def test_pre_requisite_courses_enabled(self, feature_flags):
|
||||
"""
|
||||
Tests is_prerequisite_courses_enabled function with a set of possible values for
|
||||
ENABLE_PREREQUISITE_COURSES and MILESTONES_APP feature flags.
|
||||
"""
|
||||
|
||||
with patch.dict("django.conf.settings.FEATURES", {
|
||||
'ENABLE_PREREQUISITE_COURSES': feature_flags[0],
|
||||
'MILESTONES_APP': feature_flags[1]
|
||||
}):
|
||||
self.assertEqual(feature_flags[2], milestones_helpers.is_prerequisite_courses_enabled())
|
||||
|
||||
def test_add_milestone_returns_none_when_app_disabled(self):
|
||||
response = milestones_helpers.add_milestone(milestone_data=self.milestone)
|
||||
self.assertIsNone(response)
|
||||
|
||||
Reference in New Issue
Block a user