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:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user