From b9fc89a32812de14344e8aaec0274f3ab2a6b8d0 Mon Sep 17 00:00:00 2001 From: Mehak Nasir Date: Mon, 7 Jun 2021 13:57:01 +0500 Subject: [PATCH 1/4] feat: documentation links added in discussion model --- openedx/core/djangoapps/discussions/models.py | 229 ++++++++++++------ 1 file changed, 151 insertions(+), 78 deletions(-) diff --git a/openedx/core/djangoapps/discussions/models.py b/openedx/core/djangoapps/discussions/models.py index 10e303a027..ccf4902e57 100644 --- a/openedx/core/djangoapps/discussions/models.py +++ b/openedx/core/djangoapps/discussions/models.py @@ -55,85 +55,158 @@ class Features(Enum): WCAG_2_1 = 'wcag-2.1' WCAG_2_0_SUPPORT = 'wcag-2.0-support' +class LINKS(Enum): + """ + Links to be used in discussion providers for documentation + """ + PIAZZA_DOCUMENTATION: '' + PIAZZA_ACCESSIBILITY_DOCUMENTATION: '' + PIAZZA_EMAIL: '' + PIAZZA_CONFIGURATION_DOCUMENTATION: '' + PIAZZA_LEARN_MORE: '' + PROVIDER_FEATURE_MAP = { - 'legacy': [ - Features.DISCUSSION_PAGE.value, - Features.WCAG_2_1.value, - Features.AUTOMATIC_LEARNER_ENROLLMENT.value, - Features.WCAG_2_0_SUPPORT.value, - Features.INTERNATIONALIZATION_SUPPORT.value, - Features.ANONYMOUS_POSTING.value, - Features.REPORT_FLAG_CONTENT_TO_MODERATORS.value, - Features.QUESTION_DISCUSSION_SUPPORT.value, - Features.COMMUNITY_TA_SUPPORT.value, - Features.BLACKOUT_DISCUSSION_DATES.value, - Features.COURSE_COHORT_SUPPORT.value, - Features.RESEARCH_DATA_EVENTS.value, - ], - 'piazza': [ - Features.DISCUSSION_PAGE.value, - Features.LTI.value, - Features.WCAG_2_0_SUPPORT.value, - Features.ANONYMOUS_POSTING.value, - Features.REPORT_FLAG_CONTENT_TO_MODERATORS.value, - Features.QUESTION_DISCUSSION_SUPPORT.value, - Features.COMMUNITY_TA_SUPPORT.value, - Features.EMAIL_NOTIFICATIONS.value, - Features.BLACKOUT_DISCUSSION_DATES.value, - Features.DISCUSSION_CONTENT_PROMPTS.value, - Features.DIRECT_MESSAGES_FROM_INSTRUCTORS.value, - Features.USER_MENTIONS.value, - ], - 'edx-next': [ - Features.AUTOMATIC_LEARNER_ENROLLMENT.value, - Features.WCAG_2_0_SUPPORT.value, - Features.INTERNATIONALIZATION_SUPPORT.value, - Features.ANONYMOUS_POSTING.value, - Features.REPORT_FLAG_CONTENT_TO_MODERATORS.value, - Features.QUESTION_DISCUSSION_SUPPORT.value, - Features.COMMUNITY_TA_SUPPORT.value, - Features.EMAIL_NOTIFICATIONS.value, - Features.BLACKOUT_DISCUSSION_DATES.value, - Features.SIMPLIFIED_IN_CONTEXT_DISCUSSION.value, - Features.ADVANCED_IN_CONTEXT_DISCUSSION.value, - Features.COURSE_COHORT_SUPPORT.value, - Features.RESEARCH_DATA_EVENTS.value, - Features.DISCUSSION_CONTENT_PROMPTS.value, - Features.GRADED_DISCUSSIONS.value, - ], - 'yellowdig': [ - Features.WCAG_2_0_SUPPORT.value, - Features.ANONYMOUS_POSTING.value, - Features.REPORT_FLAG_CONTENT_TO_MODERATORS.value, - Features.QUESTION_DISCUSSION_SUPPORT.value, - Features.COMMUNITY_TA_SUPPORT.value, - Features.EMAIL_NOTIFICATIONS.value, - Features.RESEARCH_DATA_EVENTS.value, - Features.IN_PLATFORM_NOTIFICATIONS.value, - Features.GRADED_DISCUSSIONS.value, - Features.DIRECT_MESSAGES_FROM_INSTRUCTORS.value, - Features.USER_MENTIONS.value, - ], - 'inscribe': [ - Features.PRIMARY_DISCUSSION_APP_EXPERIENCE.value, - Features.LTI_BASIC_CONFIGURATION.value, - ], - 'discourse': [ - Features.PRIMARY_DISCUSSION_APP_EXPERIENCE.value, - Features.LTI_BASIC_CONFIGURATION.value, - Features.LTI_ADVANCED_SHARING_MODE.value, - ], - 'ed-discuss': [ - Features.PRIMARY_DISCUSSION_APP_EXPERIENCE.value, - Features.LTI_BASIC_CONFIGURATION.value, - Features.WCAG_2_0_SUPPORT.value, - Features.INTERNATIONALIZATION_SUPPORT.value, - Features.ANONYMOUS_POSTING.value, - Features.REPORT_FLAG_CONTENT_TO_MODERATORS.value, - Features.QUESTION_DISCUSSION_SUPPORT.value, - Features.COMMUNITY_TA_SUPPORT.value, - Features.EMAIL_NOTIFICATIONS.value, - ] + 'legacy': { + 'features': [ + Features.DISCUSSION_PAGE.value, + Features.WCAG_2_1.value, + Features.AUTOMATIC_LEARNER_ENROLLMENT.value, + Features.WCAG_2_0_SUPPORT.value, + Features.INTERNATIONALIZATION_SUPPORT.value, + Features.ANONYMOUS_POSTING.value, + Features.REPORT_FLAG_CONTENT_TO_MODERATORS.value, + Features.QUESTION_DISCUSSION_SUPPORT.value, + Features.COMMUNITY_TA_SUPPORT.value, + Features.BLACKOUT_DISCUSSION_DATES.value, + Features.COURSE_COHORT_SUPPORT.value, + Features.RESEARCH_DATA_EVENTS.value, + ], + 'documentation_urls': { + 'learnMore': '', + 'configurationDocumentation': '', + 'documentation': '', + 'accessibilityDocumentation': '', + 'emailId': '', + } + }, + 'piazza': { + 'features':[ + Features.DISCUSSION_PAGE.value, + Features.LTI.value, + Features.WCAG_2_0_SUPPORT.value, + Features.ANONYMOUS_POSTING.value, + Features.REPORT_FLAG_CONTENT_TO_MODERATORS.value, + Features.QUESTION_DISCUSSION_SUPPORT.value, + Features.COMMUNITY_TA_SUPPORT.value, + Features.EMAIL_NOTIFICATIONS.value, + Features.BLACKOUT_DISCUSSION_DATES.value, + Features.DISCUSSION_CONTENT_PROMPTS.value, + Features.DIRECT_MESSAGES_FROM_INSTRUCTORS.value, + Features.USER_MENTIONS.value, + ], + 'documentation_urls': { + 'learnMore': 'https://piazza.com/product/overview', + 'configurationDocumentation': 'https://support.piazza.com/support/solutions/articles/48001065447-configure-piazza-within-edx', + 'documentation': 'https://support.piazza.com/', + 'accessibilityDocumentation': 'https://piazza.com/product/accessibility', + 'emailId': 'team@piazza.com', + } + }, + 'edx-next': { + 'features': [ + Features.AUTOMATIC_LEARNER_ENROLLMENT.value, + Features.WCAG_2_0_SUPPORT.value, + Features.INTERNATIONALIZATION_SUPPORT.value, + Features.ANONYMOUS_POSTING.value, + Features.REPORT_FLAG_CONTENT_TO_MODERATORS.value, + Features.QUESTION_DISCUSSION_SUPPORT.value, + Features.COMMUNITY_TA_SUPPORT.value, + Features.EMAIL_NOTIFICATIONS.value, + Features.BLACKOUT_DISCUSSION_DATES.value, + Features.SIMPLIFIED_IN_CONTEXT_DISCUSSION.value, + Features.ADVANCED_IN_CONTEXT_DISCUSSION.value, + Features.COURSE_COHORT_SUPPORT.value, + Features.RESEARCH_DATA_EVENTS.value, + Features.DISCUSSION_CONTENT_PROMPTS.value, + Features.GRADED_DISCUSSIONS.value, + ], + 'documentation_urls': { + 'learnMore': '', + 'configurationDocumentation': '', + 'documentation': '', + 'accessibilityDocumentation': '', + 'emailId': '', + } + }, + 'yellowdig': { + 'features': [ + Features.WCAG_2_0_SUPPORT.value, + Features.ANONYMOUS_POSTING.value, + Features.REPORT_FLAG_CONTENT_TO_MODERATORS.value, + Features.QUESTION_DISCUSSION_SUPPORT.value, + Features.COMMUNITY_TA_SUPPORT.value, + Features.EMAIL_NOTIFICATIONS.value, + Features.RESEARCH_DATA_EVENTS.value, + Features.IN_PLATFORM_NOTIFICATIONS.value, + Features.GRADED_DISCUSSIONS.value, + Features.DIRECT_MESSAGES_FROM_INSTRUCTORS.value, + Features.USER_MENTIONS.value, + ], + 'documentation_urls': { + 'learnMore': 'https://www.youtube.com/watch?v=ZACief-qMwY', + 'configurationDocumentation': '', + 'documentation': 'https://hubs.ly/H0J5Bn70', + 'accessibilityDocumentation': 'https://drive.google.com/file/d/1FT6E2ajMabFQI3NqgInPgGsQnLH7e2Mb/view?usp=sharing', + 'emailId': 'learnmore@yellowdig.com', + } + }, + 'inscribe': { + 'features': [ + Features.PRIMARY_DISCUSSION_APP_EXPERIENCE.value, + Features.LTI_BASIC_CONFIGURATION.value, + ], + 'documentation_urls': { + 'learnMore': '', + 'configurationDocumentation': '', + 'documentation': 'https://www.inscribeapp.com/', + 'accessibilityDocumentation': '', + 'emailId': '', + } + }, + 'discourse': { + 'features': [ + Features.PRIMARY_DISCUSSION_APP_EXPERIENCE.value, + Features.LTI_BASIC_CONFIGURATION.value, + Features.LTI_ADVANCED_SHARING_MODE.value, + ], + 'documentation_urls': { + 'learnMore': '', + 'configurationDocumentation': '', + 'documentation': 'http://discourse.org/', + 'accessibilityDocumentation': '', + 'emailId': '', + } + }, + 'ed-discuss': { + 'features': [ + Features.PRIMARY_DISCUSSION_APP_EXPERIENCE.value, + Features.LTI_BASIC_CONFIGURATION.value, + Features.WCAG_2_0_SUPPORT.value, + Features.INTERNATIONALIZATION_SUPPORT.value, + Features.ANONYMOUS_POSTING.value, + Features.REPORT_FLAG_CONTENT_TO_MODERATORS.value, + Features.QUESTION_DISCUSSION_SUPPORT.value, + Features.COMMUNITY_TA_SUPPORT.value, + Features.EMAIL_NOTIFICATIONS.value, + ], + 'documentation_urls': { + 'learnMore': '', + 'configurationDocumentation': '', + 'documentation': 'https://edstem.org/us/', + 'accessibilityDocumentation': '', + 'emailId': '', + } + } } From d4431455a1d2b600c8d285426b4c8306c8c47bf0 Mon Sep 17 00:00:00 2001 From: Mehak Nasir Date: Mon, 7 Jun 2021 20:29:44 +0500 Subject: [PATCH 2/4] refactor: updated provider map structure and test cases --- .../decisions/0003-configuration-rest-api.rst | 2 +- openedx/core/djangoapps/discussions/models.py | 118 +++++++++--------- .../djangoapps/discussions/serializers.py | 4 +- .../discussions/tests/test_views.py | 6 +- 4 files changed, 62 insertions(+), 68 deletions(-) diff --git a/openedx/core/djangoapps/discussions/docs/decisions/0003-configuration-rest-api.rst b/openedx/core/djangoapps/discussions/docs/decisions/0003-configuration-rest-api.rst index 5cb0b3fb67..c57c539a57 100644 --- a/openedx/core/djangoapps/discussions/docs/decisions/0003-configuration-rest-api.rst +++ b/openedx/core/djangoapps/discussions/docs/decisions/0003-configuration-rest-api.rst @@ -76,7 +76,7 @@ The payload is expected to be shaped like this (key names subject to change): 'active': configuration.provider_type or '', 'available': { provider: { - 'features': PROVIDER_FEATURE_MAP.get(provider) or [], + 'features': AVAILABLE_PROVIDER_MAP.get(provider).get('features') or [], } for provider in configuration.available_providers }, diff --git a/openedx/core/djangoapps/discussions/models.py b/openedx/core/djangoapps/discussions/models.py index ccf4902e57..d3d7540538 100644 --- a/openedx/core/djangoapps/discussions/models.py +++ b/openedx/core/djangoapps/discussions/models.py @@ -16,6 +16,7 @@ from model_utils.models import TimeStampedModel from opaque_keys.edx.django.models import LearningContextKeyField from opaque_keys.edx.keys import CourseKey from simple_history.models import HistoricalRecords +from collections import namedtuple from openedx.core.djangoapps.config_model_utils.models import StackedConfigurationModel from openedx.core.djangoapps.content.course_overviews.models import CourseOverview @@ -25,6 +26,9 @@ log = logging.getLogger(__name__) DEFAULT_PROVIDER_TYPE = 'legacy' +DocumentLinks = namedtuple('DocumentLinks', ['learn_more', 'configuration_documentation', 'documentation', 'accessibility_documentation', 'email_id']) + + class Features(Enum): """ Features to be used/mapped in discussion providers @@ -55,17 +59,7 @@ class Features(Enum): WCAG_2_1 = 'wcag-2.1' WCAG_2_0_SUPPORT = 'wcag-2.0-support' -class LINKS(Enum): - """ - Links to be used in discussion providers for documentation - """ - PIAZZA_DOCUMENTATION: '' - PIAZZA_ACCESSIBILITY_DOCUMENTATION: '' - PIAZZA_EMAIL: '' - PIAZZA_CONFIGURATION_DOCUMENTATION: '' - PIAZZA_LEARN_MORE: '' - -PROVIDER_FEATURE_MAP = { +AVAILABLE_PROVIDER_MAP = { 'legacy': { 'features': [ Features.DISCUSSION_PAGE.value, @@ -81,16 +75,16 @@ PROVIDER_FEATURE_MAP = { Features.COURSE_COHORT_SUPPORT.value, Features.RESEARCH_DATA_EVENTS.value, ], - 'documentation_urls': { - 'learnMore': '', - 'configurationDocumentation': '', - 'documentation': '', - 'accessibilityDocumentation': '', - 'emailId': '', - } + 'documentation_urls': DocumentLinks( + '', + '', + '', + '', + '', + )._asdict(), }, 'piazza': { - 'features':[ + 'features': [ Features.DISCUSSION_PAGE.value, Features.LTI.value, Features.WCAG_2_0_SUPPORT.value, @@ -104,13 +98,13 @@ PROVIDER_FEATURE_MAP = { Features.DIRECT_MESSAGES_FROM_INSTRUCTORS.value, Features.USER_MENTIONS.value, ], - 'documentation_urls': { - 'learnMore': 'https://piazza.com/product/overview', - 'configurationDocumentation': 'https://support.piazza.com/support/solutions/articles/48001065447-configure-piazza-within-edx', - 'documentation': 'https://support.piazza.com/', - 'accessibilityDocumentation': 'https://piazza.com/product/accessibility', - 'emailId': 'team@piazza.com', - } + 'documentation_urls': DocumentLinks( + 'https://piazza.com/product/overview', + 'https://support.piazza.com/support/solutions/articles/48001065447-configure-piazza-within-edx', + 'https://support.piazza.com/', + 'https://piazza.com/product/accessibility', + 'team@piazza.com', + )._asdict() }, 'edx-next': { 'features': [ @@ -130,13 +124,13 @@ PROVIDER_FEATURE_MAP = { Features.DISCUSSION_CONTENT_PROMPTS.value, Features.GRADED_DISCUSSIONS.value, ], - 'documentation_urls': { - 'learnMore': '', - 'configurationDocumentation': '', - 'documentation': '', - 'accessibilityDocumentation': '', - 'emailId': '', - } + 'documentation_urls': DocumentLinks( + '', + '', + '', + '', + '', + )._asdict(), }, 'yellowdig': { 'features': [ @@ -152,26 +146,26 @@ PROVIDER_FEATURE_MAP = { Features.DIRECT_MESSAGES_FROM_INSTRUCTORS.value, Features.USER_MENTIONS.value, ], - 'documentation_urls': { - 'learnMore': 'https://www.youtube.com/watch?v=ZACief-qMwY', - 'configurationDocumentation': '', - 'documentation': 'https://hubs.ly/H0J5Bn70', - 'accessibilityDocumentation': 'https://drive.google.com/file/d/1FT6E2ajMabFQI3NqgInPgGsQnLH7e2Mb/view?usp=sharing', - 'emailId': 'learnmore@yellowdig.com', - } + 'documentation_urls': DocumentLinks( + 'https://www.youtube.com/watch?v=ZACief-qMwY', + '', + 'https://hubs.ly/H0J5Bn7', + 'https://drive.google.com/file/d/1FT6E2ajMabFQI3NqgInPgGsQnLH7e2Mb/view?usp=sharing', + 'learnmore@yellowdig.com', + )._asdict(), }, 'inscribe': { 'features': [ Features.PRIMARY_DISCUSSION_APP_EXPERIENCE.value, Features.LTI_BASIC_CONFIGURATION.value, ], - 'documentation_urls': { - 'learnMore': '', - 'configurationDocumentation': '', - 'documentation': 'https://www.inscribeapp.com/', - 'accessibilityDocumentation': '', - 'emailId': '', - } + 'documentation_urls': DocumentLinks( + '', + '', + 'https://www.inscribeapp.com/', + '', + '', + )._asdict(), }, 'discourse': { 'features': [ @@ -179,13 +173,13 @@ PROVIDER_FEATURE_MAP = { Features.LTI_BASIC_CONFIGURATION.value, Features.LTI_ADVANCED_SHARING_MODE.value, ], - 'documentation_urls': { - 'learnMore': '', - 'configurationDocumentation': '', - 'documentation': 'http://discourse.org/', - 'accessibilityDocumentation': '', - 'emailId': '', - } + 'documentation_urls': DocumentLinks( + '', + '', + 'http://discourse.org/', + '', + '', + )._asdict(), }, 'ed-discuss': { 'features': [ @@ -199,13 +193,13 @@ PROVIDER_FEATURE_MAP = { Features.COMMUNITY_TA_SUPPORT.value, Features.EMAIL_NOTIFICATIONS.value, ], - 'documentation_urls': { - 'learnMore': '', - 'configurationDocumentation': '', - 'documentation': 'https://edstem.org/us/', - 'accessibilityDocumentation': '', - 'emailId': '', - } + 'documentation_urls': DocumentLinks( + '', + '', + 'https://edstem.org/us/', + '', + '', + )._asdict(), } } @@ -368,7 +362,7 @@ class DiscussionsConfiguration(TimeStampedModel): """ Check if the provider supports some feature """ - features = PROVIDER_FEATURE_MAP.get(self.provider_type) or [] + features = AVAILABLE_PROVIDER_MAP.get(self.provider_type).get('features') or [] has_support = bool(feature in features) return has_support diff --git a/openedx/core/djangoapps/discussions/serializers.py b/openedx/core/djangoapps/discussions/serializers.py index b17c8a6db1..1649f11011 100644 --- a/openedx/core/djangoapps/discussions/serializers.py +++ b/openedx/core/djangoapps/discussions/serializers.py @@ -10,7 +10,7 @@ from openedx.core.djangoapps.django_comment_common.models import CourseDiscussio from openedx.core.lib.courses import get_course_by_id from xmodule.modulestore.django import modulestore -from .models import DEFAULT_PROVIDER_TYPE, PROVIDER_FEATURE_MAP, DiscussionsConfiguration, Features +from .models import DEFAULT_PROVIDER_TYPE, AVAILABLE_PROVIDER_MAP, DiscussionsConfiguration, Features class LtiSerializer(serializers.ModelSerializer): @@ -209,7 +209,7 @@ class DiscussionsConfigurationSerializer(serializers.ModelSerializer): 'plugin_configuration': plugin_configuration, 'providers': { 'active': provider_type or DEFAULT_PROVIDER_TYPE, - 'available': PROVIDER_FEATURE_MAP, + 'available': AVAILABLE_PROVIDER_MAP, }, }) return payload diff --git a/openedx/core/djangoapps/discussions/tests/test_views.py b/openedx/core/djangoapps/discussions/tests/test_views.py index 88f87df999..8e5417c251 100644 --- a/openedx/core/djangoapps/discussions/tests/test_views.py +++ b/openedx/core/djangoapps/discussions/tests/test_views.py @@ -16,7 +16,7 @@ from common.lib.xmodule.xmodule.modulestore.tests.django_utils import ModuleStor from xmodule.modulestore import ModuleStoreEnum from xmodule.modulestore.tests.factories import CourseFactory -from ..models import PROVIDER_FEATURE_MAP +from ..models import AVAILABLE_PROVIDER_MAP DATA_LEGACY_COHORTS = { @@ -143,7 +143,7 @@ class DataTest(AuthorizedApiTest): assert response.status_code == self.expected_response_code assert not data['enabled'] assert data['provider_type'] == 'legacy' - assert data['providers']['available']['legacy'] == PROVIDER_FEATURE_MAP['legacy'] + assert data['providers']['available']['legacy'] == AVAILABLE_PROVIDER_MAP['legacy'] assert data['lti_configuration'] == {} assert data['plugin_configuration'] == { 'allow_anonymous': True, @@ -188,7 +188,7 @@ class DataTest(AuthorizedApiTest): data = self._setup_lti() assert data['enabled'] assert data['provider_type'] == 'piazza' - assert data['providers']['available']['piazza'] == PROVIDER_FEATURE_MAP['piazza'] + assert data['providers']['available']['piazza'] == AVAILABLE_PROVIDER_MAP['piazza'] assert data['lti_configuration'] == DATA_LTI_CONFIGURATION assert len(data['plugin_configuration']) == 0 assert len(data['lti_configuration']) > 0 From b6f96f25b9639ef261c92107212e0dd82d6094cb Mon Sep 17 00:00:00 2001 From: Mehak Nasir Date: Thu, 10 Jun 2021 14:17:35 +0500 Subject: [PATCH 3/4] fix: removed google drive link from codebase --- openedx/core/djangoapps/discussions/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openedx/core/djangoapps/discussions/models.py b/openedx/core/djangoapps/discussions/models.py index d3d7540538..e1e0ecedfc 100644 --- a/openedx/core/djangoapps/discussions/models.py +++ b/openedx/core/djangoapps/discussions/models.py @@ -150,7 +150,7 @@ AVAILABLE_PROVIDER_MAP = { 'https://www.youtube.com/watch?v=ZACief-qMwY', '', 'https://hubs.ly/H0J5Bn7', - 'https://drive.google.com/file/d/1FT6E2ajMabFQI3NqgInPgGsQnLH7e2Mb/view?usp=sharing', + '', 'learnmore@yellowdig.com', )._asdict(), }, From 222d898e39bc472b95466b45843434ad7f0c4db2 Mon Sep 17 00:00:00 2001 From: Mehak Nasir Date: Thu, 10 Jun 2021 15:09:39 +0500 Subject: [PATCH 4/4] refactor: renaming external keys and improved code review fixes --- openedx/core/djangoapps/discussions/models.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/openedx/core/djangoapps/discussions/models.py b/openedx/core/djangoapps/discussions/models.py index e1e0ecedfc..75ec49bf59 100644 --- a/openedx/core/djangoapps/discussions/models.py +++ b/openedx/core/djangoapps/discussions/models.py @@ -26,7 +26,7 @@ log = logging.getLogger(__name__) DEFAULT_PROVIDER_TYPE = 'legacy' -DocumentLinks = namedtuple('DocumentLinks', ['learn_more', 'configuration_documentation', 'documentation', 'accessibility_documentation', 'email_id']) +ProviderExternalLinks = namedtuple('ProviderExternalLinks', ['learn_more', 'configuration', 'general', 'accessibility', 'contact_email']) class Features(Enum): @@ -75,7 +75,7 @@ AVAILABLE_PROVIDER_MAP = { Features.COURSE_COHORT_SUPPORT.value, Features.RESEARCH_DATA_EVENTS.value, ], - 'documentation_urls': DocumentLinks( + 'external_links': ProviderExternalLinks( '', '', '', @@ -98,7 +98,7 @@ AVAILABLE_PROVIDER_MAP = { Features.DIRECT_MESSAGES_FROM_INSTRUCTORS.value, Features.USER_MENTIONS.value, ], - 'documentation_urls': DocumentLinks( + 'external_links': ProviderExternalLinks( 'https://piazza.com/product/overview', 'https://support.piazza.com/support/solutions/articles/48001065447-configure-piazza-within-edx', 'https://support.piazza.com/', @@ -124,7 +124,7 @@ AVAILABLE_PROVIDER_MAP = { Features.DISCUSSION_CONTENT_PROMPTS.value, Features.GRADED_DISCUSSIONS.value, ], - 'documentation_urls': DocumentLinks( + 'external_links': ProviderExternalLinks( '', '', '', @@ -146,7 +146,7 @@ AVAILABLE_PROVIDER_MAP = { Features.DIRECT_MESSAGES_FROM_INSTRUCTORS.value, Features.USER_MENTIONS.value, ], - 'documentation_urls': DocumentLinks( + 'external_links': ProviderExternalLinks( 'https://www.youtube.com/watch?v=ZACief-qMwY', '', 'https://hubs.ly/H0J5Bn7', @@ -159,7 +159,7 @@ AVAILABLE_PROVIDER_MAP = { Features.PRIMARY_DISCUSSION_APP_EXPERIENCE.value, Features.LTI_BASIC_CONFIGURATION.value, ], - 'documentation_urls': DocumentLinks( + 'external_links': ProviderExternalLinks( '', '', 'https://www.inscribeapp.com/', @@ -173,7 +173,7 @@ AVAILABLE_PROVIDER_MAP = { Features.LTI_BASIC_CONFIGURATION.value, Features.LTI_ADVANCED_SHARING_MODE.value, ], - 'documentation_urls': DocumentLinks( + 'external_links': ProviderExternalLinks( '', '', 'http://discourse.org/', @@ -193,7 +193,7 @@ AVAILABLE_PROVIDER_MAP = { Features.COMMUNITY_TA_SUPPORT.value, Features.EMAIL_NOTIFICATIONS.value, ], - 'documentation_urls': DocumentLinks( + 'external_links': ProviderExternalLinks( '', '', 'https://edstem.org/us/', @@ -362,7 +362,7 @@ class DiscussionsConfiguration(TimeStampedModel): """ Check if the provider supports some feature """ - features = AVAILABLE_PROVIDER_MAP.get(self.provider_type).get('features') or [] + features = AVAILABLE_PROVIDER_MAP.get(self.provider_type)['features'] or [] has_support = bool(feature in features) return has_support