Files
edx-platform/openedx/features/course_duration_limits/config.py
2018-12-12 20:46:45 -05:00

52 lines
1.9 KiB
Python

"""
Content type gating waffle flag
"""
import random
from django.dispatch import receiver
from experiments.models import ExperimentData, ExperimentKeyValue
from openedx.core.djangoapps.waffle_utils import WaffleFlagNamespace, WaffleFlag
from student.models import EnrollStatusChange
from student.signals import ENROLL_STATUS_CHANGE
WAFFLE_FLAG_NAMESPACE = WaffleFlagNamespace(name=u'content_type_gating')
CONTENT_TYPE_GATING_FLAG = WaffleFlag(
waffle_namespace=WAFFLE_FLAG_NAMESPACE,
flag_name=u'debug',
flag_undefined_default=False
)
EXPERIMENT_ID = 11
EXPERIMENT_DATA_HOLDBACK_KEY = 'holdback'
@receiver(ENROLL_STATUS_CHANGE)
def set_value_for_content_type_gating_holdback(sender, event=None, user=None, **kwargs): # pylint: disable=unused-argument
if event == EnrollStatusChange.enroll:
user_holdback_data = ExperimentData.objects.filter(
user=user,
experiment_id=EXPERIMENT_ID,
key=EXPERIMENT_DATA_HOLDBACK_KEY,
)
user_holdback_data_already_set = user_holdback_data.exists()
if not user_holdback_data_already_set:
try:
content_type_gating_holdback_percentage_value = ExperimentKeyValue.objects.get(
experiment_id=EXPERIMENT_ID,
key="content_type_gating_holdback_percentage"
).value
content_type_gating_holdback_percentage = float(content_type_gating_holdback_percentage_value) / 100
is_in_holdback = str(random.random() < content_type_gating_holdback_percentage)
ExperimentData.objects.create(
user=user,
experiment_id=EXPERIMENT_ID,
key=EXPERIMENT_DATA_HOLDBACK_KEY,
value=is_in_holdback
)
except (ExperimentKeyValue.DoesNotExist, AttributeError):
pass