The new design for the program detail page introduced a sidebar which includes a program-specific listing of credentials. This is an improvement over the old list of credentials found on the program list page and is meant to replace it. The new detail page is stable, so the credential listing on the program list page can be removed. LEARNER-492
51 lines
1.8 KiB
Python
51 lines
1.8 KiB
Python
"""Helper functions for working with Credentials."""
|
|
from __future__ import unicode_literals
|
|
|
|
from django.conf import settings
|
|
from edx_rest_api_client.client import EdxRestApiClient
|
|
|
|
from openedx.core.djangoapps.credentials.models import CredentialsApiConfig
|
|
from openedx.core.lib.edx_api_utils import get_edx_api_data
|
|
from openedx.core.lib.token_utils import JwtBuilder
|
|
|
|
|
|
def get_credentials_api_client(user):
|
|
""" Returns an authenticated Credentials API client. """
|
|
|
|
scopes = ['email', 'profile']
|
|
expires_in = settings.OAUTH_ID_TOKEN_EXPIRATION
|
|
jwt = JwtBuilder(user).build_token(scopes, expires_in)
|
|
return EdxRestApiClient(CredentialsApiConfig.current().internal_api_url, jwt=jwt)
|
|
|
|
|
|
def get_credentials(user, program_uuid=None):
|
|
"""
|
|
Given a user, get credentials earned from the credentials service.
|
|
|
|
Arguments:
|
|
user (User): The user to authenticate as when requesting credentials.
|
|
|
|
Keyword Arguments:
|
|
program_uuid (str): UUID of the program whose credential to retrieve.
|
|
|
|
Returns:
|
|
list of dict, representing credentials returned by the Credentials
|
|
service.
|
|
"""
|
|
credential_configuration = CredentialsApiConfig.current()
|
|
|
|
querystring = {'username': user.username, 'status': 'awarded'}
|
|
|
|
if program_uuid:
|
|
querystring['program_uuid'] = program_uuid
|
|
|
|
# Bypass caching for staff users, who may be generating credentials and
|
|
# want to see them displayed immediately.
|
|
use_cache = credential_configuration.is_cache_enabled and not user.is_staff
|
|
cache_key = credential_configuration.CACHE_KEY + '.' + user.username if use_cache else None
|
|
api = get_credentials_api_client(user)
|
|
|
|
return get_edx_api_data(
|
|
credential_configuration, 'credentials', api=api, querystring=querystring, cache_key=cache_key
|
|
)
|