def get(self, request, username, *args, **kargs): # pylint: disable=unused-argument
"""
Returns information needed to display the user
dashboard for all the programs the user is enrolled in.
"""
user = get_object_or_404(
User,
social_auth__uid=username,
social_auth__provider=EdxOrgOAuth2.name
)
# get the credentials for the current user for edX
edx_client = None
if user == request.user:
user_social = get_social_auth(request.user)
try:
utils.refresh_user_token(user_social)
except utils.InvalidCredentialStored as exc:
return Response(
status=exc.http_status_code,
data={'error': str(exc)}
)
except: # pylint: disable=bare-except
log.exception('Impossible to refresh user credentials in dashboard view')
# create an instance of the client to query edX
edx_client = EdxApi(user_social.extra_data, settings.EDXORG_BASE_URL)
try:
program_dashboard = get_user_program_info(user, edx_client)
except utils.InvalidCredentialStored as exc:
log.exception('Access token for user %s is fresh but invalid; forcing login.', user.username)
return Response(
status=exc.http_status_code,
data={'error': str(exc)}
)
return Response(
status=status.HTTP_200_OK,
data=program_dashboard
)
评论列表
文章目录