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
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
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
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
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
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)
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)