Added anonymous user id and extra params in program lti (#29429)

* fix: added anonymous user id and extra params in program lti

* refactor: updated flag name

* fix: fixed linter issues
This commit is contained in:
Ahtisham Shahid
2021-12-02 17:05:35 +05:00
committed by GitHub
parent ca867c105f
commit 00b53287d5
9 changed files with 41 additions and 25 deletions

View File

@@ -4,11 +4,12 @@ Fragments for rendering programs.
import json
from urllib.parse import quote
from django.contrib.sites.shortcuts import get_current_site
from django.http import Http404
from django.template.loader import render_to_string
from django.urls import reverse
from django.utils.translation import gettext_lazy as _ # lint-amnesty, pylint: disable=unused-import
from django.utils.translation import get_language, to_locale, gettext_lazy as _ # lint-amnesty, pylint: disable=unused-import
from lti_consumer.lti_1p1.contrib.django import lti_embed
from web_fragments.fragment import Fragment
@@ -17,7 +18,7 @@ from lms.djangoapps.commerce.utils import EcommerceService
from lms.djangoapps.learner_dashboard.utils import FAKE_COURSE_KEY, program_tab_view_is_enabled, strip_course_id
from openedx.core.djangoapps.catalog.constants import PathwayType
from openedx.core.djangoapps.catalog.utils import get_pathways
from openedx.core.djangoapps.catalog.utils import get_pathways, get_programs
from openedx.core.djangoapps.credentials.utils import get_credentials_records_url
from openedx.core.djangoapps.discussions.models import ProgramDiscussionsConfiguration
from openedx.core.djangoapps.plugin_api.views import EdxFragmentView
@@ -30,6 +31,7 @@ from openedx.core.djangoapps.programs.utils import (
)
from openedx.core.djangoapps.user_api.preferences.api import get_user_preferences
from openedx.core.djangolib.markup import HTML
from common.djangoapps.student.models import anonymous_id_for_user
class ProgramsFragmentView(EdxFragmentView):
@@ -147,9 +149,9 @@ class ProgramDetailsFragmentView(EdxFragmentView):
'certificate_data': certificate_data,
'industry_pathways': industry_pathways,
'credit_pathways': credit_pathways,
'program_discussions_enabled': program_tab_view_is_enabled(),
'program_tab_view_enabled': program_tab_view_is_enabled(),
'discussion_fragment': {
'enabled': bool(program_discussion_lti.configuration),
'configured': bool(program_discussion_lti.configuration),
'iframe': program_discussion_lti.render_iframe()
}
}
@@ -175,6 +177,7 @@ class ProgramDiscussionLTI:
def __init__(self, program_uuid, request):
self.program_uuid = program_uuid
self.program = get_programs(uuid=self.program_uuid)
self.request = request
self.configuration = self.get_configuration()
@@ -205,6 +208,16 @@ class ProgramDiscussionLTI:
all_roles = [basic_role]
return ','.join(all_roles)
def _get_additional_lti_parameters(self):
lti_config = self.configuration.lti_configuration
return lti_config.lti_config.get('additional_parameters', {})
def _get_context_title(self) -> str:
return "{} - {}".format(
self.program.get('title', ''),
self.program.get('subtitle', ''),
)
def _get_lti_embed_code(self) -> str:
"""
Returns the LTI embed code for embedding in the program discussions tab
@@ -217,13 +230,16 @@ class ProgramDiscussionLTI:
return lti_embed(
html_element_id='lti-tab-launcher',
lti_consumer=self.configuration.lti_configuration.get_lti_consumer(),
resource_link_id=resource_link_id,
user_id=str(self.request.user.id),
resource_link_id=quote(resource_link_id),
user_id=quote(anonymous_id_for_user(self.request.user, None)),
roles=self.get_user_roles(),
context_id=self.program_uuid,
context_title=self.program_uuid,
context_id=quote(self.program_uuid),
context_title=self._get_context_title(),
context_label=self.program_uuid,
result_sourcedid=result_sourcedid
result_sourcedid=quote(result_sourcedid),
locale=to_locale(get_language()),
additional_params=self._get_additional_lti_parameters()
)
def render_iframe(self) -> str: