feat: added pii params for program discussions (#29532)

* feat: added pii params for program discussions

* refactor: added conditions
This commit is contained in:
AsadAzam
2021-12-09 18:39:34 +05:00
committed by GitHub
parent fab0656bd5
commit 3f06445389
3 changed files with 67 additions and 2 deletions

View File

@@ -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:

View File

@@ -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',

View 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__'