def get_redirect_url(self, *args, **kwargs): request = self.request site = request.site basket = Basket.get_basket(request.user, site) if not basket.is_empty: # Need to re-apply the voucher to the basket. Applicator().apply(basket, request.user, request) if basket.total_incl_tax != Decimal(0): raise BasketNotFreeError( 'Basket [{}] is not free. User affected [{}]'.format( basket.id, basket.owner.id)) order = self.place_free_order(basket) if has_enterprise_offer(basket): # Skip the receipt page and redirect to the LMS # if the order is free due to an Enterprise-related offer. program_uuid = get_program_uuid(order) if program_uuid: url = get_lms_program_dashboard_url(program_uuid) else: course_run_id = order.lines.all()[:1].get( ).product.course.id url = get_lms_courseware_url(course_run_id) else: receipt_path = get_receipt_page_url( order_number=order.number, site_configuration=order.site.siteconfiguration) url = site.siteconfiguration.build_lms_url(receipt_path) else: # If a user's basket is empty redirect the user to the basket summary # page which displays the appropriate message for empty baskets. url = reverse('basket:summary') return url
def get_order_dashboard_context(self, order): program_uuid = get_program_uuid(order) if program_uuid: order_dashboard_url = get_lms_program_dashboard_url(program_uuid) else: order_dashboard_url = get_lms_dashboard_url() return {'order_dashboard_url': order_dashboard_url}
def test_enterprise_offer_program_redirect(self): """ Verify redirect to the program dashboard page. """ self.prepare_basket(10, bundle=True) self.prepare_enterprise_offer() self.assertEqual(Order.objects.count(), 0) response = self.client.get(self.path) self.assertEqual(Order.objects.count(), 1) expected_url = get_lms_program_dashboard_url(self.bundle_attribute_value) self.assertRedirects(response, expected_url, fetch_redirect_response=False)