From d5d237529f32106a859c45e7fd034e888c199ab8 Mon Sep 17 00:00:00 2001 From: Agrendalath Date: Mon, 19 May 2025 20:54:12 +0200 Subject: [PATCH 1/2] fix: retrieve course ID when rendering DiscussionXBlock Without this, the `forum` package gets `None` as a course key and fails with `InvalidKeyError` when checking the forum backend. --- .../djangoapps/django_comment_common/comment_client/user.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openedx/core/djangoapps/django_comment_common/comment_client/user.py b/openedx/core/djangoapps/django_comment_common/comment_client/user.py index 4fd8bac18203..8f963f69270f 100644 --- a/openedx/core/djangoapps/django_comment_common/comment_client/user.py +++ b/openedx/core/djangoapps/django_comment_common/comment_client/user.py @@ -234,7 +234,7 @@ def _retrieve(self, *args, **kwargs): retrieve_params['group_id'] = self.group_id # course key -> id conversation - course_id = retrieve_params.get('course_id') + course_id = retrieve_params.get('course_id') or kwargs.get("course_key") if course_id: course_id = str(course_id) retrieve_params['course_id'] = course_id From 5df8ebecc51e5147037786b16bc5a715b5409e75 Mon Sep 17 00:00:00 2001 From: Agrendalath Date: Wed, 21 May 2025 21:49:49 +0200 Subject: [PATCH 2/2] fix: do not pass the `"None"` string to forum when `course_id` is not specified --- .../comment_client/models.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/openedx/core/djangoapps/django_comment_common/comment_client/models.py b/openedx/core/djangoapps/django_comment_common/comment_client/models.py index 1812d24dec0a..463828d26539 100644 --- a/openedx/core/djangoapps/django_comment_common/comment_client/models.py +++ b/openedx/core/djangoapps/django_comment_common/comment_client/models.py @@ -177,12 +177,13 @@ def save(self, params=None): def delete(self, course_id=None): course_key = get_course_key(self.attributes.get("course_id") or course_id) + course_id = str(course_key) if course_key else None if is_forum_v2_enabled(course_key): response = None if self.type == "comment": - response = forum_api.delete_comment(comment_id=self.attributes["id"], course_id=str(course_key)) + response = forum_api.delete_comment(comment_id=self.attributes["id"], course_id=course_id) elif self.type == "thread": - response = forum_api.delete_thread(thread_id=self.attributes["id"], course_id=str(course_key)) + response = forum_api.delete_thread(thread_id=self.attributes["id"], course_id=course_id) if response is None: raise CommentClientRequestError("Forum v2 API call is missing") else: @@ -224,15 +225,16 @@ def handle_update(self, params=None): if params: request_params.update(params) course_id = self.attributes.get("course_id") or request_params.get("course_id") + course_id = str(course_id) if course_id else None course_key = get_course_key(course_id) if is_forum_v2_enabled(course_key): response = None if self.type == "comment": - response = self.handle_update_comment(request_params, str(course_key)) + response = self.handle_update_comment(request_params, course_id) elif self.type == "thread": - response = self.handle_update_thread(request_params, str(course_key)) + response = self.handle_update_thread(request_params, course_id) elif self.type == "user": - response = self.handle_update_user(request_params, str(course_key)) + response = self.handle_update_user(request_params, course_id) if response is None: raise CommentClientRequestError("Forum v2 API call is missing") else: @@ -319,13 +321,14 @@ def perform_http_post_request(self): def handle_create(self, params=None): course_id = self.attributes.get("course_id") or params.get("course_id") + course_id = str(course_id) if course_id else None course_key = get_course_key(course_id) if is_forum_v2_enabled(course_key): response = None if self.type == "comment": - response = self.handle_create_comment(str(course_key)) + response = self.handle_create_comment(course_id) elif self.type == "thread": - response = self.handle_create_thread(str(course_key)) + response = self.handle_create_thread(course_id) if response is None: raise CommentClientRequestError("Forum v2 API call is missing") else: