fix: add is_configured property
This commit is contained in:
committed by
Mehak Nasir
parent
770230c366
commit
51b2b89bcd
@@ -151,7 +151,7 @@ class ProgramDetailsFragmentView(EdxFragmentView):
|
||||
'credit_pathways': credit_pathways,
|
||||
'program_tab_view_enabled': program_tab_view_is_enabled(),
|
||||
'discussion_fragment': {
|
||||
'configured': bool(program_discussion_lti.configuration),
|
||||
'configured': program_discussion_lti.is_configured,
|
||||
'iframe': program_discussion_lti.render_iframe()
|
||||
}
|
||||
}
|
||||
@@ -179,15 +179,14 @@ class ProgramDiscussionLTI:
|
||||
self.program_uuid = program_uuid
|
||||
self.program = get_programs(uuid=self.program_uuid)
|
||||
self.request = request
|
||||
self.configuration = self.get_configuration()
|
||||
self.configuration = ProgramDiscussionsConfiguration.get(self.program_uuid)
|
||||
|
||||
def get_configuration(self) -> ProgramDiscussionsConfiguration:
|
||||
@property
|
||||
def is_configured(self):
|
||||
"""
|
||||
Returns ProgramDiscussionsConfiguration object with respect to program_uuid
|
||||
Returns a boolean indicating if the program configuration is enabled or not.
|
||||
"""
|
||||
return ProgramDiscussionsConfiguration.objects.filter(
|
||||
program_uuid=self.program_uuid
|
||||
).first()
|
||||
return bool(self.configuration and self.configuration.enabled)
|
||||
|
||||
def _get_resource_link_id(self) -> str:
|
||||
site = get_current_site(self.request)
|
||||
@@ -268,7 +267,7 @@ class ProgramDiscussionLTI:
|
||||
"""
|
||||
Returns the program discussion fragment if program discussions configuration exists for a program uuid
|
||||
"""
|
||||
if not self.configuration:
|
||||
if not self.is_configured:
|
||||
return ''
|
||||
|
||||
lti_embed_html = self._get_lti_embed_code()
|
||||
|
||||
@@ -54,7 +54,7 @@ class TestProgramDiscussionIframeView(SharedModuleStoreTestCase, ProgramCacheMix
|
||||
response = self.client.get(self.url)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
expected_data = {
|
||||
'enabled': True,
|
||||
'tab_view_enabled': True,
|
||||
'discussion': {
|
||||
'iframe': "",
|
||||
'configured': False
|
||||
@@ -70,6 +70,29 @@ class TestProgramDiscussionIframeView(SharedModuleStoreTestCase, ProgramCacheMix
|
||||
response = self.client.get(self.url)
|
||||
self.assertEqual(response.status_code, 401)
|
||||
|
||||
def test_program_discussion_disabled(self):
|
||||
"""
|
||||
Tests that API does not return discussion iframe when discussion
|
||||
configuration is disabled.
|
||||
"""
|
||||
__ = ProgramDiscussionsConfiguration.objects.create(
|
||||
program_uuid=self.program_uuid,
|
||||
enabled=False,
|
||||
provider_type="piazza",
|
||||
)
|
||||
expected_data = {
|
||||
'tab_view_enabled': True,
|
||||
'discussion': {
|
||||
'iframe': "",
|
||||
'configured': False
|
||||
}
|
||||
}
|
||||
|
||||
response = self.client.get(self.url)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(response.data, expected_data)
|
||||
|
||||
def test_api_returns_discussions_iframe(self):
|
||||
"""
|
||||
Test if API returns iframe in case ProgramDiscussionsConfiguration model contains proper data
|
||||
|
||||
@@ -86,7 +86,7 @@ class ProgramDiscussionIframeView(APIView, ProgramSpecificViewMixin):
|
||||
**Example**
|
||||
|
||||
{
|
||||
'enabled_for_masters': True,
|
||||
'tab_view_enabled': True,
|
||||
'discussion': {
|
||||
"iframe": "
|
||||
<iframe
|
||||
@@ -96,11 +96,10 @@ class ProgramDiscussionIframeView(APIView, ProgramSpecificViewMixin):
|
||||
>
|
||||
</iframe>
|
||||
",
|
||||
"enabled": false
|
||||
"configured": false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
"""
|
||||
authentication_classes = (BearerAuthentication, SessionAuthentication)
|
||||
permission_classes = (permissions.IsAuthenticated, IsEnrolledInProgram)
|
||||
@@ -108,14 +107,11 @@ class ProgramDiscussionIframeView(APIView, ProgramSpecificViewMixin):
|
||||
def get(self, request, program_uuid):
|
||||
""" GET handler """
|
||||
program_discussion_lti = ProgramDiscussionLTI(program_uuid, request)
|
||||
return Response(
|
||||
|
||||
{
|
||||
'enabled': masters_program_tab_view_is_enabled(),
|
||||
'discussion': {
|
||||
'iframe': program_discussion_lti.render_iframe(),
|
||||
'configured': bool(program_discussion_lti.configuration),
|
||||
}
|
||||
},
|
||||
status=status.HTTP_200_OK
|
||||
)
|
||||
response_data = {
|
||||
'tab_view_enabled': masters_program_tab_view_is_enabled(),
|
||||
'discussion': {
|
||||
'iframe': program_discussion_lti.render_iframe(),
|
||||
'configured': program_discussion_lti.is_configured,
|
||||
}
|
||||
}
|
||||
return Response(response_data, status=status.HTTP_200_OK)
|
||||
|
||||
@@ -552,17 +552,13 @@ class ProgramDiscussionsConfiguration(TimeStampedModel):
|
||||
return f"Configuration(uuid='{self.program_uuid}', provider='{self.provider_type}', enabled={self.enabled})"
|
||||
|
||||
@classmethod
|
||||
def is_enabled(cls, program_uuid) -> bool:
|
||||
def get(cls, program_uuid):
|
||||
"""
|
||||
Check if there is an active configuration for a given program uuid
|
||||
|
||||
Default to False, if no configuration exists
|
||||
Lookup a program discussion configuration by program uuid.
|
||||
"""
|
||||
try:
|
||||
configuration = cls.objects.get(program_uuid=program_uuid)
|
||||
return configuration.enabled
|
||||
except cls.DoesNotExist:
|
||||
return False
|
||||
return ProgramDiscussionsConfiguration.objects.filter(
|
||||
program_uuid=program_uuid
|
||||
).first()
|
||||
|
||||
|
||||
class DiscussionTopicLink(models.Model):
|
||||
|
||||
Reference in New Issue
Block a user