utils.py 1.51 KB
Newer Older
1 2 3 4
""" Commerce API Service. """
from django.conf import settings
from edx_rest_api_client.client import EdxRestApiClient

5
from eventtracking import tracker
6
from openedx.core.djangoapps.site_configuration import helpers as configuration_helpers
7
from openedx.core.lib.token_utils import JwtBuilder
8

9
ECOMMERCE_DATE_FORMAT = '%Y-%m-%dT%H:%M:%SZ'
10 11 12 13


def create_tracking_context(user):
    """ Assembles attributes from user and request objects to be sent along
14
    in E-Commerce API calls for tracking purposes. """
15 16 17 18 19 20 21 22 23 24 25
    context_tracker = tracker.get_tracker().resolve_context()

    return {
        'lms_user_id': user.id,
        'lms_client_id': context_tracker.get('client_id'),
        'lms_ip': context_tracker.get('ip'),
    }


def is_commerce_service_configured():
    """
26
    Return a Boolean indicating whether or not configuration is present to use the external commerce service.
27
    """
28 29
    ecommerce_api_url = configuration_helpers.get_value('ECOMMERCE_API_URL', settings.ECOMMERCE_API_URL)
    return bool(ecommerce_api_url)
30 31


32
def ecommerce_api_client(user, session=None, token_expiration=None):
33
    """ Returns an E-Commerce API client setup with authentication for the specified user. """
34 35 36
    claims = {'tracking_context': create_tracking_context(user)}
    jwt = JwtBuilder(user).build_token(['email', 'profile'], expires_in=token_expiration, additional_claims=claims)

37
    return EdxRestApiClient(
38 39
        configuration_helpers.get_value('ECOMMERCE_API_URL', settings.ECOMMERCE_API_URL),
        jwt=jwt,
40
        session=session
41
    )