From b4566cfa1ee1013e6fae2bd87c05ba655dc55237 Mon Sep 17 00:00:00 2001 From: German Date: Wed, 26 Jul 2023 17:50:54 -0300 Subject: [PATCH] feat: [ACADEMIC-16209] Unit summary settings [https://jira.2u.com/browse/ACADEMIC-16209](https://jira.2u.com/browse/ACADEMIC-16209) 1. Add unit xpert unit summaries settings behind flag `summaryhook_summaries_configuration` added [here](https://github.com/edx/ai-aside/pull/45/files) 2. Only show the checkbox when the value is a `boolean` otherwise the feature is considerer `disabled` by the flag. 3. Update block handler to update this value via `api` exposed [here](https://github.com/edx/ai-aside/pull/43) 4. Create `AiAsideSummary` configuration class to provide access to the `ai_aside.api` endpoints. --- cms/lib/ai_aside_summary_config.py | 10 ++++++---- cms/lib/test/test_ai_aside_summary_config.py | 12 +++++++++++- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/cms/lib/ai_aside_summary_config.py b/cms/lib/ai_aside_summary_config.py index 43b1f50888b4..ce3addd23f02 100644 --- a/cms/lib/ai_aside_summary_config.py +++ b/cms/lib/ai_aside_summary_config.py @@ -27,7 +27,7 @@ def is_enabled(self): try: from ai_aside.config_api.api import is_summary_config_enabled return is_summary_config_enabled(self.course_key) - except (ImportError, ModuleNotFoundError): + except Exception: return False def is_summary_enabled(self, unit_key=None): @@ -35,9 +35,11 @@ def is_summary_enabled(self, unit_key=None): Define if the summary configuration is enabled in ai_aside """ try: - from ai_aside.config_api.api import is_summary_enabled + from ai_aside.config_api.api import is_course_present, is_summary_enabled + if not is_course_present(self.course_key): + return None return is_summary_enabled(self.course_key, unit_key) - except (ImportError, ModuleNotFoundError): + except Exception: return None def set_summary_settings(self, unit_key, settings=None): @@ -50,5 +52,5 @@ def set_summary_settings(self, unit_key, settings=None): try: from ai_aside.config_api.api import set_unit_settings return set_unit_settings(self.course_key, unit_key, settings) - except (ImportError, ModuleNotFoundError): + except Exception: return None diff --git a/cms/lib/test/test_ai_aside_summary_config.py b/cms/lib/test/test_ai_aside_summary_config.py index f6c0a3b98c0b..ea8b369219d0 100644 --- a/cms/lib/test/test_ai_aside_summary_config.py +++ b/cms/lib/test/test_ai_aside_summary_config.py @@ -5,7 +5,7 @@ import sys from unittest import TestCase -from unittest.mock import Mock, patch +from unittest.mock import Mock from opaque_keys.edx.keys import CourseKey, UsageKey @@ -36,12 +36,22 @@ def test_is_summary_enabled(self): Check the summary configuration value for a particular course and an optional unit using the ai_aside lib. """ ai_aside_summary_config = AiAsideSummaryConfig(self.COURSE_KEY) + ai_aside.is_course_present.return_value = True ai_aside.is_summary_enabled.return_value = True self.assertTrue(ai_aside_summary_config.is_summary_enabled()) + ai_aside.is_course_present.return_value = True ai_aside.is_summary_enabled.return_value = False self.assertFalse(ai_aside_summary_config.is_summary_enabled(self.UNIT_KEY)) + ai_aside.is_course_present.return_value = False + ai_aside.is_summary_enabled.return_value = True + self.assertIsNone(ai_aside_summary_config.is_summary_enabled()) + + ai_aside.is_course_present.return_value = False + ai_aside.is_summary_enabled.return_value = False + self.assertIsNone(ai_aside_summary_config.is_summary_enabled(self.UNIT_KEY)) + def test_set_summary_settings(self): """ Set the summary configuration settings for a particular unit using the ai_aside lib.