diff --git a/lms/djangoapps/experiments/flags.py b/lms/djangoapps/experiments/flags.py index b326b79b3ce5c755fabfe22dedeb79288fac60bb..cc6c03464efe5c7b6a78eec538c7d08ad9d03a02 100644 --- a/lms/djangoapps/experiments/flags.py +++ b/lms/djangoapps/experiments/flags.py @@ -184,11 +184,7 @@ class ExperimentWaffleFlag(CourseWaffleFlag): # First check if forced into a particular bucket, using our subordinate bucket flags. # If not, calculate their default bucket using a consistent hash function. for i, bucket_flag in enumerate(self.bucket_flags): - forced_into_bucket = ( - bucket_flag.is_enabled(course_key) if course_key - else bucket_flag.is_enabled_without_course_context() - ) - if forced_into_bucket: + if bucket_flag.is_enabled(course_key): bucket = i break else: @@ -224,17 +220,12 @@ class ExperimentWaffleFlag(CourseWaffleFlag): def is_enabled(self, course_key=None): return self.get_bucket(course_key) != 0 - def is_enabled_without_course_context(self): - return self.is_enabled() - def is_experiment_on(self, course_key=None): """ Return whether the overall experiment flag is enabled for this user. This disregards `.bucket_flags`. """ - if course_key is None: - return super().is_enabled_without_course_context() return super().is_enabled(course_key) @contextmanager diff --git a/lms/djangoapps/experiments/tests/test_flags.py b/lms/djangoapps/experiments/tests/test_flags.py index ff80fe694f7485f0122494c676d336ece73a2920..594a4b6ae4fc47d57f66cd1257feaf4e6bc86048 100644 --- a/lms/djangoapps/experiments/tests/test_flags.py +++ b/lms/djangoapps/experiments/tests/test_flags.py @@ -137,11 +137,9 @@ class ExperimentWaffleFlagTests(SharedModuleStoreTestCase): def test_is_enabled(self): with patch('experiments.flags.ExperimentWaffleFlag.get_bucket', return_value=1): - self.assertEqual(self.flag.is_enabled_without_course_context(), True) self.assertEqual(self.flag.is_enabled(self.key), True) self.assertEqual(self.flag.is_enabled(), True) with patch('experiments.flags.ExperimentWaffleFlag.get_bucket', return_value=0): - self.assertEqual(self.flag.is_enabled_without_course_context(), False) self.assertEqual(self.flag.is_enabled(self.key), False) self.assertEqual(self.flag.is_enabled(), False) diff --git a/openedx/core/djangoapps/waffle_utils/__init__.py b/openedx/core/djangoapps/waffle_utils/__init__.py index 94be7ba3324411bceaef069bd66e16ef1b91b74d..4aafcd0fd67740b959e606b0f58b42acf5c96ed6 100644 --- a/openedx/core/djangoapps/waffle_utils/__init__.py +++ b/openedx/core/djangoapps/waffle_utils/__init__.py @@ -456,38 +456,20 @@ class CourseWaffleFlag(WaffleFlag): return course_override_callback - def _is_enabled(self, course_key=None): + def is_enabled(self, course_key=None): # pylint: disable=arguments-differ """ - Returns whether or not the flag is enabled without error checking. + Returns whether or not the flag is enabled within the context of a given course. Arguments: - course_key (CourseKey): The course to check for override before - checking waffle. - """ + course_key (Optional[CourseKey]): The course to check for override before + checking waffle. If omitted, check whether the flag is enabled + outside the context of any course. + """ + if course_key: + assert isinstance(course_key, CourseKey), ( + "Provided course_key '{}' is not instance of CourseKey.".format(course_key) + ) return self.waffle_namespace.is_flag_active( self.flag_name, check_before_waffle_callback=self._get_course_override_callback(course_key), ) - - def is_enabled_without_course_context(self): - """ - Returns whether or not the flag is enabled outside the context of a given course. - This should only be used when a course waffle flag must be used outside of a course. - If this is intended for use with a simple global setting, use simple waffle flag instead. - """ - return self._is_enabled() - - def is_enabled(self, course_key): - """ - Returns whether or not the flag is enabled within the context of a given course. - - Arguments: - course_key (CourseKey): The course to check for override before - checking waffle. - """ - # validate arguments - assert issubclass(type(course_key), CourseKey), u"The course_key '{}' must be a CourseKey.".format( - str(course_key) - ) - - return self._is_enabled(course_key)