REVEM-219 Handle invalid course run key

This commit is contained in:
Christie Rice
2019-03-07 10:56:05 -05:00
parent 2a1cff52d5
commit 7375eb4474
2 changed files with 40 additions and 2 deletions

View File

@@ -0,0 +1,25 @@
"""
Tests of experiment functionality
"""
from unittest import TestCase
from lms.djangoapps.experiments.utils import is_enrolled_in_course_run
from opaque_keys.edx.keys import CourseKey
class ExperimentUtilsTests(TestCase):
"""
Tests of experiment functionality
"""
def test_valid_course_run_key_enrollment(self):
course_run = {
'key': 'course-v1:DelftX+NGIx+RA0',
}
enrollment_ids = {CourseKey.from_string('course-v1:DelftX+NGIx+RA0')}
self.assertTrue(is_enrolled_in_course_run(course_run, enrollment_ids))
def test_invalid_course_run_key_enrollment(self):
course_run = {
'key': 'cr_key',
}
enrollment_ids = {CourseKey.from_string('course-v1:DelftX+NGIx+RA0')}
self.assertFalse(is_enrolled_in_course_run(course_run, enrollment_ids))

View File

@@ -4,6 +4,7 @@ Utilities to facilitate experimentation
import hashlib
import re
import logging
from student.models import CourseEnrollment
from django_comment_common.models import Role
from course_modes.models import get_cosmetic_verified_display_price
@@ -11,10 +12,14 @@ from courseware.access import has_staff_access_to_preview_mode
from courseware.date_summary import verified_upgrade_deadline_link, verified_upgrade_link_is_valid
from xmodule.partitions.partitions_service import get_user_partition_groups, get_all_partitions_for_course
from opaque_keys.edx.keys import CourseKey
from opaque_keys import InvalidKeyError
from openedx.core.djangoapps.catalog.utils import get_programs
from openedx.core.djangoapps.waffle_utils import WaffleFlag, WaffleFlagNamespace
logger = logging.getLogger(__name__)
# TODO: clean up as part of REVEM-199 (START)
# .. feature_toggle_name: experiments.add_programs
# .. feature_toggle_type: flag
@@ -104,8 +109,16 @@ def is_enrolled_in_course_run(course_run, enrollment_course_ids):
"""
Determine if the user is enrolled in this course run
"""
course_run_key = CourseKey.from_string(course_run.get('key'))
return course_run_key in enrollment_course_ids
key = None
try:
key = course_run.get('key')
course_run_key = CourseKey.from_string(key)
return course_run_key in enrollment_course_ids
except InvalidKeyError:
logger.warn(
u'Unable to determine if user was enrolled since the course key {} is invalid'.format(key)
)
return False # Invalid course run key. Assume user is not enrolled.
# TODO: clean up as part of REVEM-199 (END)