feat: added pii params for program discussions (#29532)
* feat: added pii params for program discussions * refactor: added conditions
This commit is contained in:
@@ -218,6 +218,26 @@ class ProgramDiscussionLTI:
|
||||
self.program.get('subtitle', ''),
|
||||
)
|
||||
|
||||
def _get_pii_lti_parameters(self, configuration, request):
|
||||
"""
|
||||
Get LTI parameters that contain PII.
|
||||
|
||||
Args:
|
||||
configuration (LtiConfiguration): LtiConfiguration object.
|
||||
request (HttpRequest): Request object for view in which LTI will be embedded.
|
||||
|
||||
Returns:
|
||||
Dictionary with LTI parameters containing PII.
|
||||
"""
|
||||
if configuration.version != configuration.LTI_1P1:
|
||||
return {}
|
||||
pii_config = {}
|
||||
if configuration.pii_share_username:
|
||||
pii_config['person_sourcedid'] = request.user.username
|
||||
if configuration.pii_share_email:
|
||||
pii_config['person_contact_email_primary'] = request.user.email
|
||||
return pii_config
|
||||
|
||||
def _get_lti_embed_code(self) -> str:
|
||||
"""
|
||||
Returns the LTI embed code for embedding in the program discussions tab
|
||||
@@ -226,6 +246,8 @@ class ProgramDiscussionLTI:
|
||||
"""
|
||||
resource_link_id = self._get_resource_link_id()
|
||||
result_sourcedid = self._get_result_sourcedid(resource_link_id)
|
||||
pii_params = self._get_pii_lti_parameters(self.configuration.lti_configuration, self.request)
|
||||
additional_params = self._get_additional_lti_parameters()
|
||||
|
||||
return lti_embed(
|
||||
html_element_id='lti-tab-launcher',
|
||||
@@ -238,8 +260,8 @@ class ProgramDiscussionLTI:
|
||||
context_label=self.program_uuid,
|
||||
result_sourcedid=quote(result_sourcedid),
|
||||
locale=to_locale(get_language()),
|
||||
additional_params=self._get_additional_lti_parameters()
|
||||
|
||||
**pii_params,
|
||||
**additional_params
|
||||
)
|
||||
|
||||
def render_iframe(self) -> str:
|
||||
|
||||
@@ -7,6 +7,7 @@ from simple_history.admin import SimpleHistoryAdmin
|
||||
|
||||
from openedx.core.djangoapps.config_model_utils.admin import StackedConfigModelAdmin
|
||||
|
||||
from .forms import ProgramDiscussionsConfigurationForm
|
||||
from .models import DiscussionsConfiguration, ProgramDiscussionsConfiguration
|
||||
from .models import ProviderFilter
|
||||
|
||||
@@ -31,6 +32,14 @@ class ProgramDiscussionsConfigurationAdmin(SimpleHistoryAdmin):
|
||||
"""
|
||||
Customize the admin interface for the program discussions configuration
|
||||
"""
|
||||
form = ProgramDiscussionsConfigurationForm
|
||||
|
||||
fieldsets = (
|
||||
(None, {
|
||||
'fields': ('program_uuid', 'enabled', 'lti_configuration', 'pii_share_username', 'pii_share_email',
|
||||
'provider_type'),
|
||||
}),
|
||||
)
|
||||
|
||||
search_fields = (
|
||||
'program_uuid',
|
||||
|
||||
34
openedx/core/djangoapps/discussions/forms.py
Normal file
34
openedx/core/djangoapps/discussions/forms.py
Normal file
@@ -0,0 +1,34 @@
|
||||
"""
|
||||
Forms for discussions.
|
||||
"""
|
||||
from django import forms
|
||||
|
||||
from .models import ProgramDiscussionsConfiguration
|
||||
|
||||
|
||||
class ProgramDiscussionsConfigurationForm(forms.ModelForm):
|
||||
"""
|
||||
Custom ProgramDiscussionsConfiguration form for admin page
|
||||
"""
|
||||
pii_share_username = forms.BooleanField(required=False, initial=False)
|
||||
pii_share_email = forms.BooleanField(required=False, initial=False)
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
if self.instance.lti_configuration:
|
||||
self.fields['pii_share_username'].initial = self.instance.lti_configuration.pii_share_username
|
||||
self.fields['pii_share_email'].initial = self.instance.lti_configuration.pii_share_email
|
||||
|
||||
def save(self, commit=True):
|
||||
pii_share_username = self.cleaned_data.get('pii_share_username', False)
|
||||
pii_share_email = self.cleaned_data.get('pii_share_email', False)
|
||||
lti_configuration = self.cleaned_data.get('lti_configuration', None)
|
||||
if lti_configuration:
|
||||
lti_configuration.pii_share_username = pii_share_username
|
||||
lti_configuration.pii_share_email = pii_share_email
|
||||
lti_configuration.save()
|
||||
return super().save(commit=commit)
|
||||
|
||||
class Meta:
|
||||
model = ProgramDiscussionsConfiguration
|
||||
fields = '__all__'
|
||||
Reference in New Issue
Block a user