def test_course_details_with_enabled_setting(self): """ Test that credit eligibility requirements are present in response if the feature flag 'ENABLE_CREDIT_ELIGIBILITY' is enabled. """ # verify that credit eligibility requirements block don't show if the # course is not set as credit course response = self.client.get_html(self.course_details_url) self.assertEqual(response.status_code, 200) self.assertNotContains(response, "Course Credit Requirements") self.assertNotContains(response, "Steps required to earn course credit") # verify that credit eligibility requirements block shows if the # course is set as credit course and it has eligibility requirements credit_course = CreditCourse(course_key=unicode(self.course.id), enabled=True) credit_course.save() self.assertEqual(len(get_credit_requirements(self.course.id)), 0) # test that after publishing course, minimum grade requirement is added on_course_publish(self.course.id) self.assertEqual(len(get_credit_requirements(self.course.id)), 1) response = self.client.get_html(self.course_details_url) self.assertEqual(response.status_code, 200) self.assertContains(response, "Course Credit Requirements") self.assertContains(response, "Steps required to earn course credit")
def test_course_details_with_enabled_setting(self): """ Test that credit eligibility requirements are present in response if the feature flag 'ENABLE_CREDIT_ELIGIBILITY' is enabled. """ # verify that credit eligibility requirements block don't show if the # course is not set as credit course response = self.client.get_html(self.course_details_url) self.assertEqual(response.status_code, 200) self.assertNotContains(response, "Course Credit Requirements") self.assertNotContains(response, "Steps required to earn course credit") # verify that credit eligibility requirements block shows if the # course is set as credit course and it has eligibility requirements credit_course = CreditCourse(course_key=six.text_type(self.course.id), enabled=True) credit_course.save() self.assertEqual(len(get_credit_requirements(self.course.id)), 0) # test that after publishing course, minimum grade requirement is added on_course_publish(self.course.id) self.assertEqual(len(get_credit_requirements(self.course.id)), 1) response = self.client.get_html(self.course_details_url) self.assertEqual(response.status_code, 200) self.assertContains(response, "Course Credit Requirements") self.assertContains(response, "Steps required to earn course credit")
def add_credit_course(self, enabled=True): """ Mark the course as a credit. """ credit_course = CreditCourse(course_key=self.course_key, enabled=enabled) credit_course.save() return credit_course
def add_credit_course(self, enabled=True): """ Mark the course as a credit """ credit_course = CreditCourse(course_key=self.course_key, enabled=enabled) credit_course.save() return credit_course
def add_credit_course(self): """ Add the course as a credit Returns: CreditCourse object """ credit_course = CreditCourse(course_key=self.course_key, enabled=True) credit_course.save() return credit_course
def add_credit_course(self, course_key): """Add the course as a credit. Args: course_key(CourseKey): Identifier for the course Returns: CreditCourse object added """ credit_course = CreditCourse(course_key=course_key, enabled=True) credit_course.save() return credit_course
def add_credit_course(self, course_key): """ Add the course as a credit Args: course_key(CourseKey): identifier for the course Returns: CreditCourse object added """ credit_course = CreditCourse(course_key=course_key, enabled=True) credit_course.save() return credit_course
def update_course_requirements(course_id): """ Updates course requirements table for a course. Args: course_id(str): A string representation of course identifier Returns: None """ try: course_key = CourseKey.from_string(course_id) is_credit_course = CreditCourse.is_credit_course(course_key) if is_credit_course: course = modulestore().get_course(course_key) requirements = [ { "namespace": "grade", "name": "grade", "criteria": { "min_grade": get_min_grade_for_credit(course) } } ] set_credit_requirements(course_key, requirements) except (InvalidKeyError, ItemNotFoundError, InvalidCreditRequirements) as exc: LOGGER.error('Error on adding the requirements for course %s - %s', course_id, unicode(exc)) raise update_course_requirements.retry(args=[course_id], exc=exc) else: LOGGER.info('Requirements added for course %s', course_id)
def update_course_requirements(course_id): """ Updates course requirements table for a course. Args: course_id(str): A string representation of course identifier Returns: None """ try: course_key = CourseKey.from_string(course_id) is_credit_course = CreditCourse.is_credit_course(course_key) if is_credit_course: course = modulestore().get_course(course_key) requirements = [{ "namespace": "grade", "name": "grade", "criteria": { "min_grade": get_min_grade_for_credit(course) } }] set_credit_requirements(course_key, requirements) except (InvalidKeyError, ItemNotFoundError, InvalidCreditRequirements) as exc: LOGGER.error('Error on adding the requirements for course %s - %s', course_id, unicode(exc)) raise update_course_requirements.retry(args=[course_id], exc=exc) else: LOGGER.info('Requirements added for course %s', course_id)
def update_credit_course_requirements(course_id): # pylint: disable=invalid-name """ Updates course requirements table for a course. Args: course_id(str): A string representation of course identifier Returns: None """ try: course_key = CourseKey.from_string(course_id) is_credit_course = CreditCourse.is_credit_course(course_key) if is_credit_course: requirements = _get_course_credit_requirements(course_key) set_credit_requirements(course_key, requirements) except (InvalidKeyError, ItemNotFoundError, InvalidCreditRequirements) as exc: LOGGER.error('Error on adding the requirements for course %s - %s', course_id, unicode(exc)) raise update_credit_course_requirements.retry(args=[course_id], exc=exc) else: LOGGER.info('Requirements added for course %s', course_id)
def set_credit_requirements(course_key, requirements): """ Add requirements to given course. Args: course_key(CourseKey): The identifier for course requirements(list): List of requirements to be added Example: >>> set_credit_requirements( "course-v1-edX-DemoX-1T2015", [ { "namespace": "reverification", "name": "i4x://edX/DemoX/edx-reverification-block/assessment_uuid", "display_name": "Assessment 1", "criteria": {}, }, { "namespace": "proctored_exam", "name": "i4x://edX/DemoX/proctoring-block/final_uuid", "display_name": "Final Exam", "criteria": {}, }, { "namespace": "grade", "name": "grade", "display_name": "Grade", "criteria": {"min_grade": 0.8}, }, ]) Raises: InvalidCreditRequirements Returns: None """ invalid_requirements = _validate_requirements(requirements) if invalid_requirements: invalid_requirements = ", ".join(invalid_requirements) raise InvalidCreditRequirements(invalid_requirements) try: credit_course = CreditCourse.get_credit_course(course_key=course_key) except CreditCourse.DoesNotExist: raise InvalidCreditCourse() old_requirements = CreditRequirement.get_course_requirements( course_key=course_key) requirements_to_disable = _get_requirements_to_disable( old_requirements, requirements) if requirements_to_disable: CreditRequirement.disable_credit_requirements(requirements_to_disable) for order, requirement in enumerate(requirements): CreditRequirement.add_or_update_course_requirement( credit_course, requirement, order)
def set_credit_requirements(course_key, requirements): """ Add requirements to given course. Args: course_key(CourseKey): The identifier for course requirements(list): List of requirements to be added Example: >>> set_credit_requirements( "course-v1-edX-DemoX-1T2015", [ { "namespace": "reverification", "name": "i4x://edX/DemoX/edx-reverification-block/assessment_uuid", "display_name": "Assessment 1", "criteria": {}, }, { "namespace": "proctored_exam", "name": "i4x://edX/DemoX/proctoring-block/final_uuid", "display_name": "Final Exam", "criteria": {}, }, { "namespace": "grade", "name": "grade", "display_name": "Grade", "criteria": {"min_grade": 0.8}, }, ]) Raises: InvalidCreditRequirements Returns: None """ invalid_requirements = _validate_requirements(requirements) if invalid_requirements: invalid_requirements = ", ".join(invalid_requirements) raise InvalidCreditRequirements(invalid_requirements) try: credit_course = CreditCourse.get_credit_course(course_key=course_key) except CreditCourse.DoesNotExist: raise InvalidCreditCourse() old_requirements = CreditRequirement.get_course_requirements(course_key=course_key) requirements_to_disable = _get_requirements_to_disable(old_requirements, requirements) if requirements_to_disable: CreditRequirement.disable_credit_requirements(requirements_to_disable) for order, requirement in enumerate(requirements): CreditRequirement.add_or_update_course_requirement(credit_course, requirement, order)
def is_credit_course(course_key): """ Check whether the course has been configured for credit. Args: course_key (CourseKey): Identifier of the course. Returns: bool: True iff this is a credit course. """ return CreditCourse.is_credit_course(course_key=course_key)
def update_credit_course_requirements(course_id): """ Updates course requirements table for a course. Args: course_id(str): A string representation of course identifier Returns: None """ try: course_key = CourseKey.from_string(course_id) is_credit_course = CreditCourse.is_credit_course(course_key) if is_credit_course: requirements = _get_course_credit_requirements(course_key) set_credit_requirements(course_key, requirements) except (InvalidKeyError, ItemNotFoundError, InvalidCreditRequirements) as exc: LOGGER.error(u'Error on adding the requirements for course %s - %s', course_id, six.text_type(exc)) raise update_credit_course_requirements.retry(args=[course_id], exc=exc) else: LOGGER.info(u'Requirements added for course %s', course_id)
def update_credit_course_requirements(course_id): # pylint: disable=invalid-name """Updates course requirements table for a course. Args: course_id(str): A string representation of course identifier Returns: None """ try: course_key = CourseKey.from_string(course_id) is_credit_course = CreditCourse.is_credit_course(course_key) if is_credit_course: course = modulestore().get_course(course_key) requirements = _get_course_credit_requirements(course) set_credit_requirements(course_key, requirements) except (InvalidKeyError, ItemNotFoundError, InvalidCreditRequirements) as exc: LOGGER.error("Error on adding the requirements for course %s - %s", course_id, unicode(exc)) raise update_credit_course_requirements.retry(args=[course_id], exc=exc) else: LOGGER.info("Requirements added for course %s", course_id)
def test_is_credit_course(self, is_credit): CreditCourse(course_key=self.course_key, enabled=is_credit).save() if is_credit: self.assertTrue(CreditCourse.is_credit_course(self.course_key)) else: self.assertFalse(CreditCourse.is_credit_course(self.course_key))
def test_is_credit_course(self, is_credit): CreditCourse(course_key=self.course_key, enabled=is_credit).save() if is_credit: assert CreditCourse.is_credit_course(self.course_key) else: assert not CreditCourse.is_credit_course(self.course_key)