From aa987c3c0a32063b384e1f6b4be8cb48846221a5 Mon Sep 17 00:00:00 2001 From: Leangseu Kim Date: Tue, 27 Jun 2023 15:09:00 -0400 Subject: [PATCH] feat: add open responses card to page and resources --- cms/envs/common.py | 1 + lms/djangoapps/courseware/plugins.py | 45 ++++++++++++++++++++++++++++ lms/envs/common.py | 1 + setup.py | 1 + 4 files changed, 48 insertions(+) diff --git a/cms/envs/common.py b/cms/envs/common.py index 60c602344589..e3e321c56836 100644 --- a/cms/envs/common.py +++ b/cms/envs/common.py @@ -2706,6 +2706,7 @@ WIKI_HELP_URL = "https://edx.readthedocs.io/projects/open-edx-building-and-running-a-course/en/latest/course_assets/course_wiki.html" CUSTOM_PAGES_HELP_URL = "https://edx.readthedocs.io/projects/open-edx-building-and-running-a-course/en/latest/course_assets/pages.html#adding-custom-pages" COURSE_LIVE_HELP_URL = "https://edx.readthedocs.io/projects/edx-partner-course-staff/en/latest/course_assets/course_live.html" +ORA_SETTINGS_HELP_URL = "https://edx.readthedocs.io/projects/open-edx-building-and-running-a-course/en/latest/course_assets/ora_settings.html" # keys for big blue button live provider COURSE_LIVE_GLOBAL_CREDENTIALS = {} diff --git a/lms/djangoapps/courseware/plugins.py b/lms/djangoapps/courseware/plugins.py index 3dcb2c4397d6..843cf4e77765 100644 --- a/lms/djangoapps/courseware/plugins.py +++ b/lms/djangoapps/courseware/plugins.py @@ -267,3 +267,48 @@ def get_allowed_operations(cls, course_key: CourseKey, user: Optional[User] = No @staticmethod def legacy_link(course_key: CourseKey): return urls.reverse('tabs_handler', kwargs={'course_key_string': course_key}) + + +class ORASettingsApp(CourseApp): + """ + Course App config for ORA app. + """ + + app_id = "ora_settings" + name = _("Open Response Assessment Settings") + description = _("Course level settings for Open Response Assessment.") + documentation_links = { + "learn_more_configuration": settings.ORA_SETTINGS_HELP_URL, + } + + @classmethod + def is_available(cls, course_key: CourseKey) -> bool: + """ + Open response is available for course with at least one ORA. + """ + oras = modulestore().get_items(course_key, qualifiers={'category': 'openassessment'}) + return len(oras) > 0 + + @classmethod + def is_enabled(cls, course_key: CourseKey) -> bool: + """ + Get open response enabled status from course overview model. + """ + return True + + @classmethod + def set_enabled(cls, course_key: CourseKey, enabled: bool, user: 'User') -> bool: + """ + Update open response enabled status in modulestore. Always enable to avoid confusion that user can disable ora. + """ + return True + + @classmethod + def get_allowed_operations(cls, course_key: CourseKey, user: Optional[User] = None) -> Dict[str, bool]: + """ + Get allowed operations for open response app. + """ + return { + "enable": False, + "configure": True, + } diff --git a/lms/envs/common.py b/lms/envs/common.py index 16f4ae1ebb84..c9b7a9f32eee 100644 --- a/lms/envs/common.py +++ b/lms/envs/common.py @@ -5212,6 +5212,7 @@ def _make_locale_paths(settings): # pylint: disable=missing-function-docstring WIKI_HELP_URL = "https://edx.readthedocs.io/projects/open-edx-building-and-running-a-course/en/latest/course_assets/course_wiki.html" CUSTOM_PAGES_HELP_URL = "https://edx.readthedocs.io/projects/open-edx-building-and-running-a-course/en/latest/course_assets/pages.html#adding-custom-pages" COURSE_BULK_EMAIL_HELP_URL = "https://edx.readthedocs.io/projects/open-edx-building-and-running-a-course/en/latest/manage_live_course/bulk_email.html" +ORA_SETTINGS_HELP_URL = "https://edx.readthedocs.io/projects/open-edx-building-and-running-a-course/en/latest/course_assets/ora_settings.html" ################# Bulk Course Email Settings ################# # If set, recipients of bulk course email messages will be filtered based on the last_login date of their User account. diff --git a/setup.py b/setup.py index 1bad08d9582d..17d0f07b01e1 100644 --- a/setup.py +++ b/setup.py @@ -94,6 +94,7 @@ "wiki = lms.djangoapps.course_wiki.plugins.course_app:WikiCourseApp", "custom_pages = lms.djangoapps.courseware.plugins:CustomPagesCourseApp", "live = openedx.core.djangoapps.course_live.plugins:LiveCourseApp", + "ora_settings = lms.djangoapps.courseware.plugins:ORASettingsApp", ], "openedx.course_tool": [ "calendar_sync_toggle = openedx.features.calendar_sync.plugins:CalendarSyncToggleTool",