Allow omission of course_key in call to CourseWaffleFlag.is_enabled
This effectively evaluates the flag outside of the context of a course. This was previously available through `.is_enabled_without_course_context`, which has been removed in favor of simply `is_enabled()`. This was done to make the CourseWaffleFlag interface more uniform with that of WaffleFlag and ExperimentWaffleFlag and eliminate unecessary branching when handling CourseWaffleFlags.
This commit is contained in:
committed by
Kyle McCormick
parent
b05948153a
commit
662388c7db
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user