def test_regcode_multi_redemptions(self): """ Asserts the data model around RegistrationCodeRedemption and what happens when we do multiple redemptions by same user """ self.cart.order_type = 'business' self.cart.save() CourseRegCodeItem.add_to_order(self.cart, self.course_key, 2) self.cart.purchase() reg_codes = CourseRegistrationCode.objects.filter(order=self.cart) self.assertEqual(len(reg_codes), 2) enrollment = CourseEnrollment.enroll(self.user, self.course_key) ids = [] for reg_code in reg_codes: redemption = RegistrationCodeRedemption( registration_code=reg_code, redeemed_by=self.user, course_enrollment=enrollment ) redemption.save() ids.append(redemption.id) # pylint: disable=no-member test_redemption = RegistrationCodeRedemption.registration_code_used_for_enrollment(enrollment) self.assertIn(test_redemption.id, ids) # pylint: disable=no-member
def get_enrollment_info(self, user, course_id): """ Returns the User Enrollment information. """ course = get_course_by_id(course_id, depth=0) is_course_staff = bool(has_access(user, 'staff', course)) manual_enrollment_reason = 'N/A' # check the user enrollment role if user.is_staff: platform_name = configuration_helpers.get_value('platform_name', settings.PLATFORM_NAME) enrollment_role = _('{platform_name} Staff').format(platform_name=platform_name) elif is_course_staff: enrollment_role = _('Course Staff') else: enrollment_role = _('Student') course_enrollment = CourseEnrollment.get_enrollment(user=user, course_key=course_id) if is_course_staff: enrollment_source = _('Staff') else: # get the registration_code_redemption object if exists registration_code_redemption = RegistrationCodeRedemption.registration_code_used_for_enrollment( course_enrollment) # get the paid_course registration item if exists paid_course_reg_item = PaidCourseRegistration.get_course_item_for_user_enrollment( user=user, course_id=course_id, course_enrollment=course_enrollment ) # from where the user get here if registration_code_redemption is not None: enrollment_source = _('Used Registration Code') elif paid_course_reg_item is not None: enrollment_source = _('Credit Card - Individual') else: manual_enrollment = ManualEnrollmentAudit.get_manual_enrollment(course_enrollment) if manual_enrollment is not None: enrollment_source = _( 'manually enrolled by username: {username}' ).format(username=manual_enrollment.enrolled_by.username) manual_enrollment_reason = manual_enrollment.reason else: enrollment_source = _('Manually Enrolled') enrollment_date = course_enrollment.created.strftime("%B %d, %Y") currently_enrolled = course_enrollment.is_active course_enrollment_data = collections.OrderedDict() course_enrollment_data['Enrollment Date'] = enrollment_date course_enrollment_data['Currently Enrolled'] = currently_enrolled course_enrollment_data['Enrollment Source'] = enrollment_source course_enrollment_data['Manual (Un)Enrollment Reason'] = manual_enrollment_reason course_enrollment_data['Enrollment Role'] = enrollment_role return course_enrollment_data
def get_enrollment_info(self, user, course_id): """ Returns the User Enrollment information. """ course = get_course_by_id(course_id, depth=0) is_course_staff = bool(has_access(user, 'staff', course)) # check the user enrollment role if user.is_staff: platform_name = microsite.get_value('platform_name', settings.PLATFORM_NAME) enrollment_role = _('{platform_name} Staff').format( platform_name=platform_name) elif is_course_staff: enrollment_role = _('Course Staff') else: enrollment_role = _('Student') course_enrollment = CourseEnrollment.get_enrollment( user=user, course_key=course_id) if is_course_staff: enrollment_source = _('Staff') else: # get the registration_code_redemption object if exists registration_code_redemption = RegistrationCodeRedemption.registration_code_used_for_enrollment( course_enrollment) # get the paid_course registration item if exists paid_course_reg_item = PaidCourseRegistration.get_course_item_for_user_enrollment( user=user, course_id=course_id, course_enrollment=course_enrollment) # from where the user get here if registration_code_redemption is not None: enrollment_source = _('Used Registration Code') elif paid_course_reg_item is not None: enrollment_source = _('Credit Card - Individual') else: manual_enrollment = ManualEnrollmentAudit.get_manual_enrollment( course_enrollment) if manual_enrollment is not None: enrollment_source = _( 'manually enrolled by user_id {user_id}, enrollment state transition: {transition}' ).format(user_id=manual_enrollment.enrolled_by_id, transition=manual_enrollment.state_transition) else: enrollment_source = _('Manually Enrolled') enrollment_date = course_enrollment.created.strftime("%B %d, %Y") currently_enrolled = course_enrollment.is_active course_enrollment_data = collections.OrderedDict() course_enrollment_data['Enrollment Date'] = enrollment_date course_enrollment_data['Currently Enrolled'] = currently_enrolled course_enrollment_data['Enrollment Source'] = enrollment_source course_enrollment_data['Enrollment Role'] = enrollment_role return course_enrollment_data
def get_enrollment_info(self, user, course_id): """ Returns the User Enrollment information. """ course = get_course_by_id(course_id, depth=0) is_course_staff = has_access(user, 'staff', course) # check the user enrollment role if user.is_staff: enrollment_role = _('Edx Staff') elif is_course_staff: enrollment_role = _('Course Staff') else: enrollment_role = _('Student') course_enrollment = CourseEnrollment.get_enrollment( user=user, course_key=course_id) if is_course_staff: enrollment_source = _('Staff') else: # get the registration_code_redemption object if exists registration_code_redemption = RegistrationCodeRedemption.registration_code_used_for_enrollment( course_enrollment) # get the paid_course registration item if exists paid_course_reg_item = PaidCourseRegistration.get_course_item_for_user_enrollment( user=user, course_id=course_id, course_enrollment=course_enrollment) # from where the user get here if registration_code_redemption is not None: enrollment_source = _('Used Registration Code') elif paid_course_reg_item is not None: enrollment_source = _('Credit Card - Individual') else: enrollment_source = _('Manually Enrolled') enrollment_date = course_enrollment.created.strftime("%B %d, %Y") currently_enrolled = course_enrollment.is_active course_enrollment_data = collections.OrderedDict() course_enrollment_data['Enrollment Date'] = enrollment_date course_enrollment_data['Currently Enrolled'] = currently_enrolled course_enrollment_data['Enrollment Source'] = enrollment_source course_enrollment_data['Enrollment Role'] = enrollment_role return course_enrollment_data
def get_enrollment_info(self, user, course_id): """ Returns the User Enrollment information. """ course = get_course_by_id(course_id, depth=0) is_course_staff = has_access(user, 'staff', course) # check the user enrollment role if user.is_staff: enrollment_role = _('Edx Staff') elif is_course_staff: enrollment_role = _('Course Staff') else: enrollment_role = _('Student') course_enrollment = CourseEnrollment.get_enrollment(user=user, course_key=course_id) if is_course_staff: enrollment_source = _('Staff') else: # get the registration_code_redemption object if exists registration_code_redemption = RegistrationCodeRedemption.registration_code_used_for_enrollment( course_enrollment) # get the paid_course registration item if exists paid_course_reg_item = PaidCourseRegistration.get_course_item_for_user_enrollment( user=user, course_id=course_id, course_enrollment=course_enrollment ) # from where the user get here if registration_code_redemption is not None: enrollment_source = _('Used Registration Code') elif paid_course_reg_item is not None: enrollment_source = _('Credit Card - Individual') else: enrollment_source = _('Manually Enrolled') enrollment_date = course_enrollment.created.strftime("%B %d, %Y") currently_enrolled = course_enrollment.is_active course_enrollment_data = collections.OrderedDict() course_enrollment_data['Enrollment Date'] = enrollment_date course_enrollment_data['Currently Enrolled'] = currently_enrolled course_enrollment_data['Enrollment Source'] = enrollment_source course_enrollment_data['Enrollment Role'] = enrollment_role return course_enrollment_data
def test_regcode_redemptions(self): """ Asserts the data model around RegistrationCodeRedemption """ self.cart.order_type = 'business' self.cart.save() CourseRegCodeItem.add_to_order(self.cart, self.course_key, 2) self.cart.purchase() reg_code = CourseRegistrationCode.objects.filter(order=self.cart)[0] enrollment = CourseEnrollment.enroll(self.user, self.course_key) redemption = RegistrationCodeRedemption( registration_code=reg_code, redeemed_by=self.user, course_enrollment=enrollment ) redemption.save() test_redemption = RegistrationCodeRedemption.registration_code_used_for_enrollment(enrollment) self.assertEqual(test_redemption.id, redemption.id) # pylint: disable=no-member
def get_payment_info(self, user, course_id): """ Returns the User Payment information. """ course_enrollment = CourseEnrollment.get_enrollment( user=user, course_key=course_id) paid_course_reg_item = PaidCourseRegistration.get_course_item_for_user_enrollment( user=user, course_id=course_id, course_enrollment=course_enrollment) payment_data = collections.OrderedDict() # check if the user made a single self purchase scenario # for enrollment in the course. if paid_course_reg_item is not None: coupon_redemption = CouponRedemption.objects.select_related( 'coupon').filter(order_id=paid_course_reg_item.order_id) coupon_codes = [ redemption.coupon.code for redemption in coupon_redemption ] coupon_codes = ", ".join(coupon_codes) registration_code_used = 'N/A' list_price = paid_course_reg_item.get_list_price() payment_amount = paid_course_reg_item.unit_cost coupon_codes_used = coupon_codes payment_status = paid_course_reg_item.status transaction_reference_number = paid_course_reg_item.order_id else: # check if the user used a registration code for the enrollment. registration_code_redemption = RegistrationCodeRedemption.registration_code_used_for_enrollment( course_enrollment) if registration_code_redemption is not None: registration_code = registration_code_redemption.registration_code registration_code_used = registration_code.code if registration_code.invoice_item_id: list_price, payment_amount, payment_status, transaction_reference_number =\ self._get_invoice_data(registration_code_redemption) coupon_codes_used = 'N/A' elif registration_code_redemption.registration_code.order_id: list_price, payment_amount, coupon_codes_used, payment_status, transaction_reference_number = \ self._get_order_data(registration_code_redemption, course_id) else: # this happens when the registration code is not created via invoice or bulk purchase # scenario. list_price = 'N/A' payment_amount = 'N/A' coupon_codes_used = 'N/A' registration_code_used = 'N/A' payment_status = _('Data Integrity Error') transaction_reference_number = 'N/A' else: list_price = 'N/A' payment_amount = 'N/A' coupon_codes_used = 'N/A' registration_code_used = 'N/A' payment_status = _('TBD') transaction_reference_number = 'N/A' payment_data['List Price'] = list_price payment_data['Payment Amount'] = payment_amount payment_data['Coupon Codes Used'] = coupon_codes_used payment_data['Registration Code Used'] = registration_code_used payment_data['Payment Status'] = payment_status payment_data[ 'Transaction Reference Number'] = transaction_reference_number return payment_data
def get_payment_info(self, user, course_id): """ Returns the User Payment information. """ course_enrollment = CourseEnrollment.get_enrollment(user=user, course_key=course_id) paid_course_reg_item = PaidCourseRegistration.get_course_item_for_user_enrollment( user=user, course_id=course_id, course_enrollment=course_enrollment ) payment_data = collections.OrderedDict() # check if the user made a single self purchase scenario # for enrollment in the course. if paid_course_reg_item is not None: coupon_redemption = CouponRedemption.objects.select_related('coupon').filter( order_id=paid_course_reg_item.order_id) coupon_codes = [redemption.coupon.code for redemption in coupon_redemption] coupon_codes = ", ".join(coupon_codes) registration_code_used = 'N/A' list_price = paid_course_reg_item.get_list_price() payment_amount = paid_course_reg_item.unit_cost coupon_codes_used = coupon_codes payment_status = paid_course_reg_item.status transaction_reference_number = paid_course_reg_item.order_id else: # check if the user used a registration code for the enrollment. registration_code_redemption = RegistrationCodeRedemption.registration_code_used_for_enrollment( course_enrollment) if registration_code_redemption is not None: registration_code = registration_code_redemption.registration_code registration_code_used = registration_code.code if registration_code.invoice_item_id: list_price, payment_amount, payment_status, transaction_reference_number =\ self._get_invoice_data(registration_code_redemption) coupon_codes_used = 'N/A' elif registration_code_redemption.registration_code.order_id: list_price, payment_amount, coupon_codes_used, payment_status, transaction_reference_number = \ self._get_order_data(registration_code_redemption, course_id) else: # this happens when the registration code is not created via invoice or bulk purchase # scenario. list_price = 'N/A' payment_amount = 'N/A' coupon_codes_used = 'N/A' registration_code_used = 'N/A' payment_status = _('Data Integrity Error') transaction_reference_number = 'N/A' else: list_price = 'N/A' payment_amount = 'N/A' coupon_codes_used = 'N/A' registration_code_used = 'N/A' payment_status = _('TBD') transaction_reference_number = 'N/A' payment_data['List Price'] = list_price payment_data['Payment Amount'] = payment_amount payment_data['Coupon Codes Used'] = coupon_codes_used payment_data['Registration Code Used'] = registration_code_used payment_data['Payment Status'] = payment_status payment_data['Transaction Reference Number'] = transaction_reference_number return payment_data