Skip to content

Commit 82d082b

Browse files
committed
fix: resolve issue with Xpert unit summary toggle not updating state
1 parent d8fd847 commit 82d082b

4 files changed

Lines changed: 16 additions & 9 deletions

File tree

CHANGELOG.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@ Change Log
1414
Unreleased
1515
**********
1616

17+
3.8.6 - 2026-03-24
18+
**********************************************
19+
* Fixed is_summary_enabled() to properly check course-level settings when no unit record exists
20+
* This ensures course-level toggle correctly controls summary button visibility
21+
1722
3.8.5 - 2026-02-10
1823
**********************************************
1924
* Added client ID support for unit summary feature

ai_aside/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22
A plugin containing xblocks and apps supporting GPT and other LLM use on edX.
33
"""
44

5-
__version__ = '3.8.5'
5+
__version__ = '3.8.6'
66

77
default_app_config = "ai_aside.apps.AiAsideConfig"

ai_aside/config_api/api.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -146,21 +146,23 @@ def is_summary_enabled(course_key, unit_key=None):
146146

147147
enabled_by_default = django_settings.SUMMARY_ENABLED_BY_DEFAULT is True
148148

149+
# Check unit-level override if unit_key provided
149150
if unit_key is not None:
150151
try:
151152
unit = _get_unit(course_key, unit_key)
152-
153153
if unit is not None:
154154
return unit.enabled
155155
except AiAsideNotFoundException:
156-
return enabled_by_default
156+
# No unit-level setting, fall through to check course-level
157+
pass
157158

159+
# Check course-level setting
158160
try:
159161
course = _get_course(course_key)
162+
if course is not None:
163+
return course.enabled
160164
except AiAsideNotFoundException:
161-
return enabled_by_default
162-
163-
if course is not None:
164-
return course.enabled
165+
# No course-level setting, use default
166+
pass
165167

166168
return enabled_by_default

tests/api/test_api.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ def test_is_summary_enabled_fallback(self, mock_enabled):
289289
enabled=False,
290290
)
291291

292-
self.assertFalse(is_summary_enabled(course_key_true, unit_key_non_existent))
292+
self.assertTrue(is_summary_enabled(course_key_true, unit_key_non_existent))
293293
self.assertFalse(is_summary_enabled(course_key_false, unit_key_non_existent))
294294
self.assertFalse(is_summary_enabled(course_key_non_existent, unit_key_non_existent))
295295

@@ -337,7 +337,7 @@ def test_is_summary_enabled_disabled_feature_flag_default_true(self, mock_enable
337337
self.assertTrue(is_summary_enabled(course_key_true))
338338
self.assertFalse(is_summary_enabled(course_key_false))
339339
self.assertTrue(is_summary_enabled(course_key_true, unit_key_non_existent))
340-
self.assertTrue(is_summary_enabled(course_key_false, unit_key_non_existent))
340+
self.assertFalse(is_summary_enabled(course_key_false, unit_key_non_existent))
341341
self.assertTrue(is_summary_enabled(course_key_non_existent, unit_key_non_existent))
342342

343343
def test_reset_course_unit_settings(self):

0 commit comments

Comments
 (0)