Show message for earned programs credentials
ECOM-3015
This commit is contained in:
61
openedx/core/djangoapps/credentials/utils.py
Normal file
61
openedx/core/djangoapps/credentials/utils.py
Normal file
@@ -0,0 +1,61 @@
|
||||
"""Helper functions for working with Credentials."""
|
||||
from __future__ import unicode_literals
|
||||
import logging
|
||||
|
||||
from openedx.core.djangoapps.credentials.models import CredentialsApiConfig
|
||||
from openedx.core.djangoapps.programs.utils import get_programs_for_credentials
|
||||
from openedx.core.lib.api_utils import get_api_data
|
||||
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def get_user_credentials(user):
|
||||
"""Given a user, get credentials earned from the Credentials service.
|
||||
Arguments:
|
||||
user (User): The user to authenticate as when requesting credentials.
|
||||
Returns:
|
||||
list of dict, representing credentials returned by the Credentials
|
||||
service.
|
||||
"""
|
||||
credential_configuration = CredentialsApiConfig.current()
|
||||
user_query = {'username': user.username}
|
||||
credentials = get_api_data(
|
||||
credential_configuration, user, credential_configuration.API_NAME, 'user_credentials', querystring=user_query
|
||||
)
|
||||
return credentials
|
||||
|
||||
|
||||
def get_user_program_credentials(user):
|
||||
"""Given a user, get the list of all program credentials earned and returns
|
||||
list of dictionaries containing related programs data.
|
||||
|
||||
Arguments:
|
||||
user (User): The user object for getting programs credentials.
|
||||
|
||||
Returns:
|
||||
list, containing programs dictionaries.
|
||||
"""
|
||||
programs_credentials_data = []
|
||||
credential_configuration = CredentialsApiConfig.current()
|
||||
if not credential_configuration.is_learner_issuance_enabled:
|
||||
log.debug('Display of certificates for programs is disabled.')
|
||||
return programs_credentials_data
|
||||
|
||||
credentials = get_user_credentials(user)
|
||||
if not credentials:
|
||||
log.info('No credential earned by the given user.')
|
||||
return programs_credentials_data
|
||||
|
||||
programs_credentials = []
|
||||
for credential in credentials:
|
||||
try:
|
||||
if 'program_id' in credential['credential'] and credential['status'] == 'awarded':
|
||||
programs_credentials.append(credential)
|
||||
except KeyError:
|
||||
log.exception('Invalid credential structure: %r', credential)
|
||||
|
||||
if programs_credentials:
|
||||
programs_credentials_data = get_programs_for_credentials(user, programs_credentials)
|
||||
|
||||
return programs_credentials_data
|
||||
Reference in New Issue
Block a user