diff --git a/lms/djangoapps/discussion/django_comment_client/tests/test_models.py b/lms/djangoapps/discussion/django_comment_client/tests/test_models.py index d271a5abfb..3e04944c9f 100644 --- a/lms/djangoapps/discussion/django_comment_client/tests/test_models.py +++ b/lms/djangoapps/discussion/django_comment_client/tests/test_models.py @@ -5,10 +5,13 @@ Tests for the django comment client integration models from django.test.testcases import TestCase from opaque_keys.edx.keys import CourseKey +from xmodule.modulestore.tests.django_utils import ( + TEST_DATA_MIXED_MODULESTORE, + ModuleStoreTestCase +) +from xmodule.modulestore.tests.factories import ToyCourseFactory import openedx.core.djangoapps.django_comment_common.models as models -from xmodule.modulestore.tests.django_utils import TEST_DATA_MIXED_MODULESTORE, ModuleStoreTestCase # lint-amnesty, pylint: disable=wrong-import-order -from xmodule.modulestore.tests.factories import ToyCourseFactory # lint-amnesty, pylint: disable=wrong-import-order class RoleClassTestCase(ModuleStoreTestCase): diff --git a/lms/djangoapps/discussion/django_comment_client/tests/test_utils.py b/lms/djangoapps/discussion/django_comment_client/tests/test_utils.py index bd86fe9cd3..58ef1a33e6 100644 --- a/lms/djangoapps/discussion/django_comment_client/tests/test_utils.py +++ b/lms/djangoapps/discussion/django_comment_client/tests/test_utils.py @@ -1234,20 +1234,6 @@ class DiscussionTabTestCase(ModuleStoreTestCase): with self.settings(FEATURES={'CUSTOM_COURSES_EDX': True}): assert not self.discussion_tab_present(self.enrolled_user) - @override_settings(DISCUSSIONS_MICROFRONTEND_URL="http://test.url") - @ddt.data( - (True, 'http://test.url/{}/'), - (False, '/courses/{}/discussion/forum/'), - ) - @ddt.unpack - def test_tab_with_mfe_flag(self, mfe_enabled, tab_link): - """ - Tests that the correct link is used for the MFE tab - """ - discussion_tab = CourseTabList.get_tab_by_type(self.course.tabs, 'discussion') - with override_waffle_flag(ENABLE_DISCUSSIONS_MFE, mfe_enabled): - assert discussion_tab.link_func(self.course, reverse) == tab_link.format(self.course.id) - class IsCommentableDividedTestCase(ModuleStoreTestCase): """ diff --git a/lms/djangoapps/discussion/django_comment_client/tests/utils.py b/lms/djangoapps/discussion/django_comment_client/tests/utils.py index ebcb78e2ad..1e762feeec 100644 --- a/lms/djangoapps/discussion/django_comment_client/tests/utils.py +++ b/lms/djangoapps/discussion/django_comment_client/tests/utils.py @@ -5,17 +5,17 @@ Utilities for tests within the django_comment_client module. from unittest.mock import patch +from xmodule.modulestore import ModuleStoreEnum +from xmodule.modulestore.django import modulestore +from xmodule.modulestore.tests.django_utils import SharedModuleStoreTestCase +from xmodule.modulestore.tests.factories import CourseFactory + from common.djangoapps.student.tests.factories import CourseEnrollmentFactory, UserFactory from common.djangoapps.util.testing import UrlResetMixin from openedx.core.djangoapps.course_groups.tests.helpers import CohortFactory -from openedx.core.djangoapps.django_comment_common.models import CourseDiscussionSettings -from openedx.core.djangoapps.django_comment_common.models import ForumsConfig, Role +from openedx.core.djangoapps.django_comment_common.models import CourseDiscussionSettings, ForumsConfig, Role from openedx.core.djangoapps.django_comment_common.utils import seed_permissions_roles from openedx.core.lib.teams_config import TeamsConfig -from xmodule.modulestore import ModuleStoreEnum # lint-amnesty, pylint: disable=wrong-import-order -from xmodule.modulestore.django import modulestore # lint-amnesty, pylint: disable=wrong-import-order -from xmodule.modulestore.tests.django_utils import SharedModuleStoreTestCase # lint-amnesty, pylint: disable=wrong-import-order -from xmodule.modulestore.tests.factories import CourseFactory # lint-amnesty, pylint: disable=wrong-import-order class ForumsEnableMixin: diff --git a/lms/djangoapps/discussion/plugins.py b/lms/djangoapps/discussion/plugins.py index 6574778a48..b97cd49e5d 100644 --- a/lms/djangoapps/discussion/plugins.py +++ b/lms/djangoapps/discussion/plugins.py @@ -5,13 +5,11 @@ Views handling read (GET) requests for the Discussion tab and inline discussions from django.conf import settings from django.utils.translation import gettext_noop +from xmodule.tabs import TabFragmentViewMixin import lms.djangoapps.discussion.django_comment_client.utils as utils from lms.djangoapps.courseware.tabs import EnrolledTab -from lms.djangoapps.discussion.toggles import ENABLE_DISCUSSIONS_MFE -from openedx.core.djangoapps.discussions.url_helpers import get_discussions_mfe_url from openedx.features.lti_course_tab.tab import DiscussionLtiCourseTab -from xmodule.tabs import TabFragmentViewMixin # lint-amnesty, pylint: disable=wrong-import-order class DiscussionTab(TabFragmentViewMixin, EnrolledTab): @@ -29,20 +27,6 @@ class DiscussionTab(TabFragmentViewMixin, EnrolledTab): body_class = 'discussion' online_help_token = 'discussions' - @property - def link_func(self): - """ Returns a function that returns the course tab's URL. """ - _link_func = super().link_func - - def link_func(course, reverse_func): - """ Returns a function that returns the course tab's URL. """ - mfe_url = get_discussions_mfe_url(course.id) - if ENABLE_DISCUSSIONS_MFE.is_enabled(course.id) and mfe_url: - return mfe_url - return _link_func(course, reverse_func) - - return link_func - @classmethod def is_enabled(cls, course, user=None): if not super().is_enabled(course, user): diff --git a/lms/djangoapps/discussion/rest_api/tests/test_permissions.py b/lms/djangoapps/discussion/rest_api/tests/test_permissions.py index dcd59d338e..d449cc8932 100644 --- a/lms/djangoapps/discussion/rest_api/tests/test_permissions.py +++ b/lms/djangoapps/discussion/rest_api/tests/test_permissions.py @@ -6,6 +6,8 @@ Tests for discussion API permission logic import itertools import ddt +from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase +from xmodule.modulestore.tests.factories import CourseFactory from lms.djangoapps.discussion.rest_api.permissions import ( can_delete, @@ -16,8 +18,6 @@ from lms.djangoapps.discussion.rest_api.permissions import ( from openedx.core.djangoapps.django_comment_common.comment_client.comment import Comment from openedx.core.djangoapps.django_comment_common.comment_client.thread import Thread from openedx.core.djangoapps.django_comment_common.comment_client.user import User -from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase # lint-amnesty, pylint: disable=wrong-import-order -from xmodule.modulestore.tests.factories import CourseFactory # lint-amnesty, pylint: disable=wrong-import-order def _get_context( diff --git a/lms/djangoapps/discussion/rest_api/tests/test_utils.py b/lms/djangoapps/discussion/rest_api/tests/test_utils.py index 38f14690a6..81c0692757 100644 --- a/lms/djangoapps/discussion/rest_api/tests/test_utils.py +++ b/lms/djangoapps/discussion/rest_api/tests/test_utils.py @@ -5,12 +5,12 @@ Tests for Discussion REST API utils. from datetime import datetime, timedelta from pytz import UTC +from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase +from xmodule.modulestore.tests.factories import CourseFactory -from common.djangoapps.student.tests.factories import UserFactory, CourseEnrollmentFactory -from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase # lint-amnesty, pylint: disable=wrong-import-order +from common.djangoapps.student.tests.factories import CourseEnrollmentFactory, UserFactory from lms.djangoapps.discussion.django_comment_client.tests.factories import RoleFactory from lms.djangoapps.discussion.rest_api.utils import discussion_open_for_user -from xmodule.modulestore.tests.factories import CourseFactory # lint-amnesty, pylint: disable=wrong-import-order class DiscussionAPIUtilsTestCase(ModuleStoreTestCase): diff --git a/lms/djangoapps/discussion/rest_api/views.py b/lms/djangoapps/discussion/rest_api/views.py index d9bbc0ffd5..44f79dfd14 100644 --- a/lms/djangoapps/discussion/rest_api/views.py +++ b/lms/djangoapps/discussion/rest_api/views.py @@ -7,9 +7,9 @@ import logging import uuid import edx_api_doc_tools as apidocs -from django.shortcuts import get_object_or_404 from django.contrib.auth import get_user_model from django.core.exceptions import BadRequest, ValidationError +from django.shortcuts import get_object_or_404 from edx_rest_framework_extensions.auth.jwt.authentication import JwtAuthentication from edx_rest_framework_extensions.auth.session.authentication import SessionAuthenticationAllowInactiveUser from opaque_keys.edx.keys import CourseKey @@ -20,6 +20,7 @@ from rest_framework.parsers import JSONParser from rest_framework.response import Response from rest_framework.views import APIView from rest_framework.viewsets import ViewSet +from xmodule.modulestore.django import modulestore from common.djangoapps.util.file import store_uploaded_file from lms.djangoapps.course_goals.models import UserActivity @@ -33,7 +34,7 @@ from openedx.core.djangoapps.user_api.models import UserRetirementStatus from openedx.core.lib.api.authentication import BearerAuthentication, BearerAuthenticationAllowInactiveUser from openedx.core.lib.api.parsers import MergePatchParser from openedx.core.lib.api.view_utils import DeveloperErrorViewMixin, view_auth_classes -from xmodule.modulestore.django import modulestore # lint-amnesty, pylint: disable=wrong-import-order + from ..rest_api.api import ( create_comment, create_thread, @@ -47,22 +48,18 @@ from ..rest_api.api import ( get_thread_list, get_user_comments, update_comment, - update_thread, + update_thread ) from ..rest_api.forms import ( CommentGetForm, CommentListGetForm, - UserCommentListGetForm, CourseDiscussionRolesForm, CourseDiscussionSettingsForm, ThreadListGetForm, + UserCommentListGetForm ) from ..rest_api.permissions import IsStaffOrCourseTeamOrEnrolled -from ..rest_api.serializers import ( - CourseMetadataSerailizer, - DiscussionRolesListSerializer, - DiscussionRolesSerializer, -) +from ..rest_api.serializers import CourseMetadataSerailizer, DiscussionRolesListSerializer, DiscussionRolesSerializer log = logging.getLogger(__name__) diff --git a/lms/djangoapps/discussion/signals/handlers.py b/lms/djangoapps/discussion/signals/handlers.py index affc33bb62..4321bb4c23 100644 --- a/lms/djangoapps/discussion/signals/handlers.py +++ b/lms/djangoapps/discussion/signals/handlers.py @@ -8,12 +8,12 @@ import logging from django.conf import settings from django.dispatch import receiver from opaque_keys.edx.locator import LibraryLocator +from xmodule.modulestore.django import SignalHandler from lms.djangoapps.discussion import tasks from openedx.core.djangoapps.django_comment_common import signals from openedx.core.djangoapps.site_configuration.models import SiteConfiguration from openedx.core.djangoapps.theming.helpers import get_current_site -from xmodule.modulestore.django import SignalHandler # lint-amnesty, pylint: disable=wrong-import-order log = logging.getLogger(__name__) diff --git a/lms/djangoapps/discussion/templates/discussion/discussion_board_fragment.html b/lms/djangoapps/discussion/templates/discussion/discussion_board_fragment.html index be7bce1733..a99739f07c 100644 --- a/lms/djangoapps/discussion/templates/discussion/discussion_board_fragment.html +++ b/lms/djangoapps/discussion/templates/discussion/discussion_board_fragment.html @@ -23,6 +23,7 @@ from openedx.core.djangolib.markup import HTML data-sort-preference="${sort_preference}" data-flag-moderator="${json.dumps(flag_moderator)}" data-user-group-id="${user_group_id}"> + <%include file="_switch_experience_fragment.html" />