Exemplo n.º 1
0
 def save(self, *args, **kwargs):
     course_enrollment = super(CourseEnrollmentForm, self).save(commit=False)
     user = self.cleaned_data['user']
     course_overview = self.cleaned_data['course']
     enrollment = CourseEnrollment.get_or_create_enrollment(user, course_overview.id)
     course_enrollment.id = enrollment.id
     course_enrollment.created = enrollment.created
     return course_enrollment
Exemplo n.º 2
0
 def save(self, *args, **kwargs):  # lint-amnesty, pylint: disable=signature-differs, unused-argument
     course_enrollment = super().save(commit=False)
     user = self.cleaned_data['user']
     course_overview = self.cleaned_data['course']
     enrollment = CourseEnrollment.get_or_create_enrollment(
         user, course_overview.id)
     course_enrollment.id = enrollment.id
     course_enrollment.created = enrollment.created
     return course_enrollment
Exemplo n.º 3
0
    def test_mode_change_after_refund_seat(self, course_modes, new_mode):
        """
        Test if a course seat is refunded student is enrolled into default course mode
        unless no default mode available.
        """
        course_id = CourseLocator('test_org', 'test_course_number', 'test_run')
        CourseMode.objects.all().delete()
        for course_mode in course_modes:
            CourseModeFactory.create(
                course_id=course_id,
                mode_slug=course_mode,
                mode_display_name=course_mode,
            )

        httpretty.register_uri(httpretty.POST,
                               settings.ECOMMERCE_API_URL + 'refunds/',
                               status=201,
                               body='[1]',
                               content_type='application/json')
        httpretty.register_uri(httpretty.PUT,
                               settings.ECOMMERCE_API_URL +
                               'refunds/1/process/',
                               status=200,
                               body=json.dumps({
                                   "id": 9,
                                   "created": "2017-12-21T18:23:49.468298Z",
                                   "modified": "2017-12-21T18:24:02.741426Z",
                                   "total_credit_excl_tax": "100.00",
                                   "currency": "USD",
                                   "status": "Complete",
                                   "order": 15,
                                   "user": 5
                               }),
                               content_type='application/json')
        enrollment = CourseEnrollment.enroll(self.user,
                                             course_id,
                                             mode=course_modes[0])

        refund_success = refund_seat(enrollment, True)

        enrollment = CourseEnrollment.get_or_create_enrollment(
            self.user, course_id)

        assert refund_success
        assert enrollment.mode == new_mode
Exemplo n.º 4
0
 def test_admin_model_form_update(self):
     """
     Test CourseEnrollmentAdminForm update.
     """
     enrollment = CourseEnrollment.get_or_create_enrollment(self.user, self.course.id)
     count = CourseEnrollment.objects.count()
     form = CourseEnrollmentForm({
         'user': self.user.id,
         'course': str(self.course.id),
         'is_active': False,
         'mode': 'audit'},
         instance=enrollment
     )
     assert form.is_valid()
     course_enrollment = form.save()
     assert count == CourseEnrollment.objects.count()
     assert not course_enrollment.is_active
     assert enrollment.id == course_enrollment.id
Exemplo n.º 5
0
    def get_course_enrollment(self, course_key, user):
        """
        If student is not enrolled in course enroll the student in free mode
        """

        course_enrollment = CourseEnrollment.get_enrollment(user, course_key)
        #  If student is not enrolled in course enroll the student in free mode
        if not course_enrollment:
            # try to create a enroll user in default course enrollment mode in case of
            # professional it will break because of no default course mode.
            try:
                course_enrollment = CourseEnrollment.get_or_create_enrollment(user=user,
                                                                              course_key=course_key)

            except Exception:  # pylint: disable=broad-except
                # In case if no free mode is available.
                course_enrollment = None

        return course_enrollment
Exemplo n.º 6
0
 def test_admin_model_form_update(self):
     """
     Test CourseEnrollmentAdminForm update.
     """
     enrollment = CourseEnrollment.get_or_create_enrollment(
         self.user, self.course.id)
     count = CourseEnrollment.objects.count()
     form = CourseEnrollmentForm(
         {
             'user': self.user.id,
             'course': six.text_type(self.course.id),
             'is_active': False,
             'mode': 'audit'
         },
         instance=enrollment)
     self.assertTrue(form.is_valid())
     course_enrollment = form.save()
     self.assertEqual(count, CourseEnrollment.objects.count())
     self.assertFalse(course_enrollment.is_active)
     self.assertEqual(enrollment.id, course_enrollment.id)
Exemplo n.º 7
0
    def test_activation(self):
        user = User.objects.create(username="******", email="*****@*****.**")
        course_id = CourseLocator("edX", "Test101", "2013")
        assert not CourseEnrollment.is_enrolled(user, course_id)

        # Creating an enrollment doesn't actually enroll a student
        # (calling CourseEnrollment.enroll() would have)
        enrollment = CourseEnrollment.get_or_create_enrollment(user, course_id)
        assert not CourseEnrollment.is_enrolled(user, course_id)
        self.assert_no_events_were_emitted()

        # Until you explicitly activate it
        enrollment.activate()
        assert CourseEnrollment.is_enrolled(user, course_id)
        self.assert_enrollment_event_was_emitted(user, course_id)

        # Activating something that's already active does nothing
        enrollment.activate()
        assert CourseEnrollment.is_enrolled(user, course_id)
        self.assert_no_events_were_emitted()

        # Now deactive
        enrollment.deactivate()
        assert not CourseEnrollment.is_enrolled(user, course_id)
        self.assert_unenrollment_event_was_emitted(user, course_id)

        # Deactivating something that's already inactive does nothing
        enrollment.deactivate()
        assert not CourseEnrollment.is_enrolled(user, course_id)
        self.assert_no_events_were_emitted()

        # A deactivated enrollment should be activated if enroll() is called
        # for that user/course_id combination
        CourseEnrollment.enroll(user, course_id)
        assert CourseEnrollment.is_enrolled(user, course_id)
        self.assert_enrollment_event_was_emitted(user, course_id)