Files
edx-platform/lms/djangoapps/learner_home/waffle.py
Nathan Sprenkle f783dce52d feat: Learner Home experimental rollout (#31642)
* feat: add experimental redirect for Learner Home

As a request by Data, this system repeatably groups users into
experiment groups. Based on end of user ID, users that fall beneath a
threshold (LEARNER_HOME_MFE_REDIRECT_PERCENTAGE) will be redirected to
the Learner Home experience, if enabled. Otherwise, learners will see
the legacy dashboard.

* feat: add learner home redirect percentage setting

Adds LEARNER_HOME_MFE_REDIRECT_PERCENTAGE to common settings to avoid a
failed lookup. Can be overridden through config.

* refactor: change test to not leak implementation
2023-01-25 10:59:39 -05:00

48 lines
1.4 KiB
Python

"""
Configuration for features of Learner Home
"""
from django.conf import settings
from edx_toggles.toggles import WaffleFlag
from openedx.core.djangoapps.site_configuration import helpers as configuration_helpers
# Namespace for Learner Home MFE waffle flags.
WAFFLE_FLAG_NAMESPACE = "learner_home_mfe"
# .. toggle_name: learner_home_mfe.enabled
# .. toggle_implementation: WaffleFlag
# .. toggle_default: False
# .. toggle_description: Waffle flag to enable to redirect user to learner home mfe
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2022-10-11
# .. toggle_tickets: AU-879
ENABLE_LEARNER_HOME_MFE = WaffleFlag(
f"{WAFFLE_FLAG_NAMESPACE}.enabled",
__name__,
)
def should_redirect_to_learner_home_mfe(user):
"""
Redirect a percentage of learners to Learner Home for experimentation.
Percentage is based on the LEARNER_HOME_MFE_REDIRECT_PERCENTAGE setting.
"""
is_learning_mfe_enabled = configuration_helpers.get_value(
"ENABLE_LEARNER_HOME_MFE", ENABLE_LEARNER_HOME_MFE.is_enabled()
)
learning_mfe_redirect_percent = configuration_helpers.get_value(
"LEARNER_HOME_MFE_REDIRECT_PERCENTAGE",
settings.LEARNER_HOME_MFE_REDIRECT_PERCENTAGE,
)
# Redirect when 1) Learner Home MFE is enabled and 2) a user falls into the
# target range for experimental rollout.
if is_learning_mfe_enabled and user.id % 100 < learning_mfe_redirect_percent:
return True
return False