def get_user_orders(user):
    """Given a user, get the detail of all the orders from the Ecommerce service.

    Args:
        user (User): The user to authenticate as when requesting ecommerce.

    Returns:
        list of dict, representing orders returned by the Ecommerce service.
    """
    user_orders = []
    commerce_configuration = CommerceConfiguration.current()
    user_query = {'username': user.username}

    use_cache = commerce_configuration.is_cache_enabled
    cache_key = commerce_configuration.CACHE_KEY + '.' + str(user.id) if use_cache else None
    api = ecommerce_api_client(user)
    commerce_user_orders = get_edx_api_data(
        commerce_configuration, 'orders', api=api, querystring=user_query, cache_key=cache_key
    )

    for order in commerce_user_orders:
        if order['status'].lower() == 'complete':
            date_placed = datetime.strptime(order['date_placed'], "%Y-%m-%dT%H:%M:%SZ")
            order_data = {
                'number': order['number'],
                'price': order['total_excl_tax'],
                'order_date': strftime_localized(date_placed, 'SHORT_DATE'),
                'receipt_url': EcommerceService().get_receipt_page_url(order['number']),
                'lines': order['lines'],
            }
            user_orders.append(order_data)

    return user_orders
Esempio n. 2
0
def get_user_orders(user):
    """Given a user, get the detail of all the orders from the Ecommerce service.

    Args:
        user (User): The user to authenticate as when requesting ecommerce.

    Returns:
        list of dict, representing orders returned by the Ecommerce service.
    """
    user_orders = []
    commerce_configuration = CommerceConfiguration.current()
    user_query = {'username': user.username}

    use_cache = commerce_configuration.is_cache_enabled
    cache_key = commerce_configuration.CACHE_KEY + '.' + str(user.id) if use_cache else None
    api = ecommerce_api_client(user)
    commerce_user_orders = get_edx_api_data(
        commerce_configuration, 'orders', api=api, querystring=user_query, cache_key=cache_key
    )
    log.info('----------------------------------------Orders------------------------------------%s', commerce_user_orders)
    for order in commerce_user_orders:
        if order['status'].lower() == 'complete':
            date_placed = datetime.strptime(order['date_placed'], "%Y-%m-%dT%H:%M:%SZ")
            order_data = {
                'number': order['number'],
                'price': order['total_excl_tax'],
                'order_date': strftime_localized(date_placed, 'SHORT_DATE'),
                'receipt_url': EcommerceService().get_receipt_page_url(order['number']),
                'lines': order['lines'],
            }
            user_orders.append(order_data)

    return user_orders
Esempio n. 3
0
    def test_is_enabled(self):
        """Verify that is_enabled() returns True when ecomm checkout is enabled. """
        is_enabled = EcommerceService().is_enabled(self.user)
        self.assertTrue(is_enabled)

        config = CommerceConfiguration.current()
        config.checkout_on_ecommerce_service = False
        config.save()
        is_not_enabled = EcommerceService().is_enabled(self.user)
        self.assertFalse(is_not_enabled)
Esempio n. 4
0
    def test_is_enabled(self):
        """Verify that is_enabled() returns True when ecomm checkout is enabled. """
        is_enabled = EcommerceService().is_enabled(self.user)
        self.assertTrue(is_enabled)

        config = CommerceConfiguration.current()
        config.checkout_on_ecommerce_service = False
        config.save()
        is_not_enabled = EcommerceService().is_enabled(self.user)
        self.assertFalse(is_not_enabled)
Esempio n. 5
0
 def test_get_checkout_page_url(self, skus):
     """ Verify the checkout page URL is properly constructed and returned. """
     url = EcommerceService().get_checkout_page_url(*skus)
     config = CommerceConfiguration.current()
     expected_url = '{root}{basket_url}?{skus}'.format(
         basket_url=config.MULTIPLE_ITEMS_BASKET_PAGE_URL,
         root=settings.ECOMMERCE_PUBLIC_URL_ROOT,
         skus=urlencode({'sku': skus}, doseq=True),
     )
     self.assertEqual(url, expected_url)
Esempio n. 6
0
 def test_get_checkout_page_url(self, skus, program_uuid=None):
     """ Verify the checkout page URL is properly constructed and returned. """
     url = EcommerceService().get_checkout_page_url(
         *skus, program_uuid=program_uuid)
     config = CommerceConfiguration.current()
     expected_url = '{root}{basket_url}?{skus}'.format(
         basket_url=config.basket_checkout_page,
         root=settings.ECOMMERCE_PUBLIC_URL_ROOT,
         skus=urlencode({'sku': skus}, doseq=True),
     )
     if program_uuid:
         expected_url = '{expected_url}&basket={program_uuid}'.format(
             expected_url=expected_url, program_uuid=program_uuid)
     self.assertEqual(url, expected_url)
Esempio n. 7
0
 def test_get_checkout_page_url(self, skus, program_uuid=None):
     """ Verify the checkout page URL is properly constructed and returned. """
     url = EcommerceService().get_checkout_page_url(*skus, program_uuid=program_uuid)
     config = CommerceConfiguration.current()
     expected_url = '{root}{basket_url}?{skus}'.format(
         basket_url=config.basket_checkout_page,
         root=settings.ECOMMERCE_PUBLIC_URL_ROOT,
         skus=urlencode({'sku': skus}, doseq=True),
     )
     if program_uuid:
         expected_url = '{expected_url}&basket={program_uuid}'.format(
             expected_url=expected_url,
             program_uuid=program_uuid
         )
     self.assertEqual(url, expected_url)
Esempio n. 8
0
def sponsored_user(user, course_id):
    """Given a user, get the detail of all the orders from the Ecommerce service.

    Args:
        user (User): The user to authenticate as when requesting ecommerce.

    Returns:
        list of dict, representing orders returned by the Ecommerce service.
    """
    no_data = []
    commerce_configuration = CommerceConfiguration.current()
    user_query = {"username": user.username}

    use_cache = commerce_configuration.is_cache_enabled
    cache_key = (commerce_configuration.CACHE_KEY + "." +
                 str(user.id) if use_cache else None)
    api = ecommerce_api_client(user)
    commerce_user_orders = get_edx_api_data(
        commerce_configuration,
        "orders",
        api=api,
        querystring=user_query,
        cache_key=cache_key,
    )
    user_order = "n/a"
    if commerce_user_orders:
        if not user.is_staff:
            for order in commerce_user_orders:
                order_course_id = order["lines"][0]["product"][
                    "attribute_values"][1]["value"]
                if not order["vouchers"]:
                    order_coupon_code = "nocode"
                else:
                    order_coupon_code = order["vouchers"][0]["code"]
                try:
                    Sponsored_course = Sponsored_course_users.objects.get(
                        course_id=course_id,
                        coupon_code__contains=order_coupon_code)
                    user_order = Sponsored_course.video_url
                except ObjectDoesNotExist:
                    user_order = "n/a"
        else:
            user_order = "n/a"
    else:
        user_order = "n/a"
    return user_order
Esempio n. 9
0
    def test_get_checkout_page_url_with_enterprise_catalog_uuid(
            self, skus, enterprise_catalog_uuid):
        """ Verify the checkout page URL is properly constructed and returned. """
        url = EcommerceService().get_checkout_page_url(
            *skus, catalog=enterprise_catalog_uuid)
        config = CommerceConfiguration.current()

        query = {'sku': skus}
        if enterprise_catalog_uuid:
            query.update({'catalog': enterprise_catalog_uuid})

        expected_url = '{root}{basket_url}?{skus}'.format(
            basket_url=config.basket_checkout_page,
            root=settings.ECOMMERCE_PUBLIC_URL_ROOT,
            skus=urlencode(query, doseq=True),
        )

        self.assertEqual(url, expected_url)
Esempio n. 10
0
    def test_get_checkout_page_url_with_enterprise_catalog_uuid(self, skus, enterprise_catalog_uuid):
        """ Verify the checkout page URL is properly constructed and returned. """
        url = EcommerceService().get_checkout_page_url(
            *skus,
            catalog=enterprise_catalog_uuid
        )
        config = CommerceConfiguration.current()

        query = {'sku': skus}
        if enterprise_catalog_uuid:
            query.update({'catalog': enterprise_catalog_uuid})

        expected_url = '{root}{basket_url}?{skus}'.format(
            basket_url=config.basket_checkout_page,
            root=settings.ECOMMERCE_PUBLIC_URL_ROOT,
            skus=urlencode(query, doseq=True),
        )

        self.assertEqual(url, expected_url)
Esempio n. 11
0
def sponsored_user(user,course_id):
    """Given a user, get the detail of all the orders from the Ecommerce service.

    Args:
        user (User): The user to authenticate as when requesting ecommerce.

    Returns:
        list of dict, representing orders returned by the Ecommerce service.
    """
    no_data = []
    commerce_configuration = CommerceConfiguration.current()
    user_query = {'username': user.username}

    use_cache = commerce_configuration.is_cache_enabled
    cache_key = commerce_configuration.CACHE_KEY + '.' + str(user.id) if use_cache else None
    api = ecommerce_api_client(user)
    commerce_user_orders = get_edx_api_data(
        commerce_configuration, 'orders', api=api, querystring=user_query, cache_key=cache_key
    )
    user_order = 0
    #log.info('======data %s', commerce_user_orders)
    if not user.is_staff :
        for order in commerce_user_orders:
            order_course_id = order['lines'][0]['product']['attribute_values'][1]['value']
            if not order['vouchers'] :
                order_coupon_code = "nocode"        
            else :
                order_coupon_code = order['vouchers'][0]['code']
                #log.info('======coupon_code %s', order_coupon_code)
            try:
                Sponsored_course = Sponsored_course_users.objects.filter(course_id=course_id,coupon_code__contains=order_coupon_code).values()
                if Sponsored_course:
                    user_order = Sponsored_course
                # log.info('======sponsored_data %s', Sponsored_course.query)
                # log.info('======lm_course_id %s', order_course_id)
                # log.info('======coupon_code %s', order_coupon_code)
                # log.info('======user_order %s', user_order)
            except:
                user_order = 0
                #log.info('======user_order %s', user_order)
        return user_order