Skip to content

Commit 9ee4afa

Browse files
xitij2000farhaanbukhsh
authored andcommitted
fix: use a single 'provider_type' key for storing discussion provider type in course
Both 'provider' and 'provider_type' have been used for storing the discussion provider type in course 'discussions_settings' field, there are some places in the code checking for 'provider' and others checking for 'provider_type', in some cases this can cause a bug where it doesn't detect the correct provider which causes discussion settings not being copied correctly when a course is cloned. This change prioritises the `provider_type` setting over `provider` and reads `provider` only as a fallback. The `provider` setting is now made read-only just for backwards-compatibility, to avoid confusion.
1 parent 2e9f000 commit 9ee4afa

2 files changed

Lines changed: 5 additions & 2 deletions

File tree

cms/djangoapps/contentstore/tasks.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -474,11 +474,11 @@ def sync_discussion_settings(course_key, user):
474474
if (
475475
ENABLE_NEW_STRUCTURE_DISCUSSIONS.is_enabled()
476476
and not course.discussions_settings['provider_type'] == Provider.OPEN_EDX
477+
and not course.discussions_settings['provider'] == Provider.OPEN_EDX
477478
):
478479
LOGGER.info(f"New structure is enabled, also updating {course_key} to use new provider")
479480
course.discussions_settings['enable_graded_units'] = False
480481
course.discussions_settings['unit_level_visibility'] = True
481-
course.discussions_settings['provider'] = Provider.OPEN_EDX
482482
course.discussions_settings['provider_type'] = Provider.OPEN_EDX
483483
modulestore().update_item(course, user.id)
484484

openedx/core/djangoapps/discussions/tasks.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,10 @@ def update_unit_discussion_state_from_discussion_blocks(
201201
"""
202202
store = modulestore()
203203
course = store.get_course(course_key)
204-
provider = course.discussions_settings.get('provider', None)
204+
provider = course.discussions_settings.get(
205+
'provider_type',
206+
course.discussions_settings.get('provider', None),
207+
)
205208
# Only migrate to the new discussion provider if the current provider is the legacy provider.
206209
log.info(f"Current provider for {course_key} is {provider}")
207210
if provider is not None and provider != Provider.LEGACY and not force:

0 commit comments

Comments
 (0)