diff --git a/.gitignore b/.gitignore index 2cc71b43c1..4a33fa1a40 100644 --- a/.gitignore +++ b/.gitignore @@ -132,7 +132,7 @@ build /src/ \#*\# .env/ -lms/lib/comment_client/python +django_comment_common/comment_client/python autodeploy.properties .ws_migrations_complete dist diff --git a/lms/lib/comment_client/README.rst b/common/djangoapps/django_comment_common/comment_client/README.rst similarity index 100% rename from lms/lib/comment_client/README.rst rename to common/djangoapps/django_comment_common/comment_client/README.rst diff --git a/lms/lib/comment_client/__init__.py b/common/djangoapps/django_comment_common/comment_client/__init__.py similarity index 100% rename from lms/lib/comment_client/__init__.py rename to common/djangoapps/django_comment_common/comment_client/__init__.py diff --git a/lms/lib/comment_client/comment.py b/common/djangoapps/django_comment_common/comment_client/comment.py similarity index 98% rename from lms/lib/comment_client/comment.py rename to common/djangoapps/django_comment_common/comment_client/comment.py index d0b23eadc4..377079a996 100644 --- a/lms/lib/comment_client/comment.py +++ b/common/djangoapps/django_comment_common/comment_client/comment.py @@ -1,4 +1,4 @@ -from lms.lib.comment_client import models, settings +from django_comment_common.comment_client import models, settings from .thread import Thread, _url_for_flag_abuse_thread, _url_for_unflag_abuse_thread from .utils import CommentClientRequestError, perform_request diff --git a/lms/lib/comment_client/comment_client.py b/common/djangoapps/django_comment_common/comment_client/comment_client.py similarity index 100% rename from lms/lib/comment_client/comment_client.py rename to common/djangoapps/django_comment_common/comment_client/comment_client.py diff --git a/lms/lib/comment_client/commentable.py b/common/djangoapps/django_comment_common/comment_client/commentable.py similarity index 88% rename from lms/lib/comment_client/commentable.py rename to common/djangoapps/django_comment_common/comment_client/commentable.py index 5a5a1f9113..f86760d316 100644 --- a/lms/lib/comment_client/commentable.py +++ b/common/djangoapps/django_comment_common/comment_client/commentable.py @@ -1,5 +1,5 @@ """Provides base Commentable model class""" -from lms.lib.comment_client import models, settings +from django_comment_common.comment_client import models, settings class Commentable(models.Model): diff --git a/lms/lib/comment_client/models.py b/common/djangoapps/django_comment_common/comment_client/models.py similarity index 100% rename from lms/lib/comment_client/models.py rename to common/djangoapps/django_comment_common/comment_client/models.py diff --git a/lms/lib/comment_client/requirements.txt b/common/djangoapps/django_comment_common/comment_client/requirements.txt similarity index 100% rename from lms/lib/comment_client/requirements.txt rename to common/djangoapps/django_comment_common/comment_client/requirements.txt diff --git a/lms/lib/comment_client/settings.py b/common/djangoapps/django_comment_common/comment_client/settings.py similarity index 100% rename from lms/lib/comment_client/settings.py rename to common/djangoapps/django_comment_common/comment_client/settings.py diff --git a/lms/lib/comment_client/thread.py b/common/djangoapps/django_comment_common/comment_client/thread.py similarity index 100% rename from lms/lib/comment_client/thread.py rename to common/djangoapps/django_comment_common/comment_client/thread.py diff --git a/lms/lib/comment_client/user.py b/common/djangoapps/django_comment_common/comment_client/user.py similarity index 100% rename from lms/lib/comment_client/user.py rename to common/djangoapps/django_comment_common/comment_client/user.py diff --git a/lms/lib/comment_client/utils.py b/common/djangoapps/django_comment_common/comment_client/utils.py similarity index 100% rename from lms/lib/comment_client/utils.py rename to common/djangoapps/django_comment_common/comment_client/utils.py diff --git a/common/djangoapps/student/models.py b/common/djangoapps/student/models.py index 8acd28194c..54a25fe2eb 100644 --- a/common/djangoapps/student/models.py +++ b/common/djangoapps/student/models.py @@ -50,8 +50,8 @@ from six import text_type from slumber.exceptions import HttpClientError, HttpServerError from user_util import user_util +import django_comment_common.comment_client as cc from edx_django_utils.cache import RequestCache -import lms.lib.comment_client as cc from student.signals import UNENROLL_DONE, ENROLL_STATUS_CHANGE, ENROLLMENT_TRACK_UPDATED from lms.djangoapps.certificates.models import GeneratedCertificate from course_modes.models import CourseMode, get_cosmetic_verified_display_price diff --git a/lms/djangoapps/discussion/README.rst b/lms/djangoapps/discussion/README.rst index 55f4d317b2..249c2d92fd 100644 --- a/lms/djangoapps/discussion/README.rst +++ b/lms/djangoapps/discussion/README.rst @@ -14,7 +14,6 @@ Discussions related functionality is scattered across a number of places and sho * ``lms/djangoapps/django_comment_client`` * ``lms/djangoapps/notification_prefs`` * ``lms/djangoapps/notifier_api`` -* ``lms/lib/comment_client`` * ``openedx/core/lib/xblock_builtin/xblock_discussion`` Ideally, what we want in the long term is for all of this extracted into a new repository that holds the code for both the inline discussion XBlock as well as all the Django apps. Use of the notifier API should be replaced with edx-ace. diff --git a/lms/djangoapps/discussion/tasks.py b/lms/djangoapps/discussion/tasks.py index 91ffe0a112..38b0f72bd6 100644 --- a/lms/djangoapps/discussion/tasks.py +++ b/lms/djangoapps/discussion/tasks.py @@ -11,14 +11,14 @@ from django.contrib.auth.models import User from django.contrib.sites.models import Site from celery_utils.logged_task import LoggedTask +import django_comment_common.comment_client as cc from django_comment_common.models import DiscussionsIdMapping from edx_ace import ace from edx_ace.utils import date from edx_ace.recipient import Recipient from eventtracking import tracker -from opaque_keys.edx.keys import CourseKey from lms.djangoapps.django_comment_client.utils import permalink, get_accessible_discussion_xblocks_by_course_id -import lms.lib.comment_client as cc +from opaque_keys.edx.keys import CourseKey from openedx.core.djangoapps.content.course_overviews.models import CourseOverview from openedx.core.djangoapps.ace_common.template_context import get_base_template_context diff --git a/lms/djangoapps/discussion/tests/test_tasks.py b/lms/djangoapps/discussion/tests/test_tasks.py index c7a7a119fe..06c8de6d95 100644 --- a/lms/djangoapps/discussion/tests/test_tasks.py +++ b/lms/djangoapps/discussion/tests/test_tasks.py @@ -9,7 +9,7 @@ import ddt from django.contrib.sites.models import Site import mock -import lms.lib.comment_client as cc +import django_comment_common.comment_client as cc from django_comment_common.models import ForumsConfig from django_comment_common.signals import comment_created diff --git a/lms/djangoapps/discussion/tests/test_views.py b/lms/djangoapps/discussion/tests/test_views.py index 76f18f83a6..40b44fd2cd 100644 --- a/lms/djangoapps/discussion/tests/test_views.py +++ b/lms/djangoapps/discussion/tests/test_views.py @@ -29,6 +29,7 @@ from django_comment_client.tests.utils import ( topic_name_to_id ) from django_comment_client.utils import strip_none +from django_comment_common.comment_client.utils import CommentClientPaginatedResult from django_comment_common.models import ( CourseDiscussionSettings, ForumsConfig, @@ -40,7 +41,6 @@ from lms.djangoapps.discussion import views from lms.djangoapps.discussion.views import _get_discussion_default_topic_id from lms.djangoapps.discussion.views import course_discussions_settings_handler from lms.djangoapps.teams.tests.factories import CourseTeamFactory, CourseTeamMembershipFactory -from lms.lib.comment_client.utils import CommentClientPaginatedResult from openedx.core.djangoapps.course_groups.models import CourseUserGroup from openedx.core.djangoapps.course_groups.tests.helpers import config_course_cohorts from openedx.core.djangoapps.course_groups.tests.test_views import CohortViewsTestCase @@ -559,7 +559,7 @@ class SingleCohortedThreadTestCase(CohortedTestCase): self.assertRegexpMatches(html, r'"group_name": "student_cohort"') -@patch('lms.lib.comment_client.utils.requests.request', autospec=True) +@patch('django_comment_common.comment_client.utils.requests.request', autospec=True) class SingleThreadAccessTestCase(CohortedTestCase): def call_view(self, mock_request, commentable_id, user, group_id, thread_group_id=None, pass_group_id=True): @@ -647,7 +647,7 @@ class SingleThreadAccessTestCase(CohortedTestCase): self.assertEqual(resp.status_code, 200) -@patch('lms.lib.comment_client.utils.requests.request', autospec=True) +@patch('django_comment_common.comment_client.utils.requests.request', autospec=True) class SingleThreadGroupIdTestCase(CohortedTestCase, GroupIdAssertionMixin): cs_endpoint = "/threads/dummy_thread_id" @@ -888,7 +888,7 @@ class SingleThreadContentGroupTestCase(ForumsEnableMixin, UrlResetMixin, Content self.assert_can_access(self.beta_user, self.alpha_module.discussion_id, thread_id, True) -@patch('lms.lib.comment_client.utils.requests.request', autospec=True) +@patch('django_comment_common.comment_client.utils.requests.request', autospec=True) class InlineDiscussionContextTestCase(ForumsEnableMixin, ModuleStoreTestCase): def setUp(self): @@ -925,7 +925,7 @@ class InlineDiscussionContextTestCase(ForumsEnableMixin, ModuleStoreTestCase): self.assertEqual(json_response['discussion_data'][0]['context'], ThreadContext.STANDALONE) -@patch('lms.lib.comment_client.utils.requests.request', autospec=True) +@patch('django_comment_common.comment_client.utils.requests.request', autospec=True) class InlineDiscussionGroupIdTestCase( CohortedTestCase, CohortedTopicGroupIdTestMixin, @@ -976,7 +976,7 @@ class InlineDiscussionGroupIdTestCase( ) -@patch('lms.lib.comment_client.utils.requests.request', autospec=True) +@patch('django_comment_common.comment_client.utils.requests.request', autospec=True) class ForumFormDiscussionGroupIdTestCase(CohortedTestCase, CohortedTopicGroupIdTestMixin): cs_endpoint = "/threads" @@ -1022,7 +1022,7 @@ class ForumFormDiscussionGroupIdTestCase(CohortedTestCase, CohortedTopicGroupIdT ) -@patch('lms.lib.comment_client.utils.requests.request', autospec=True) +@patch('django_comment_common.comment_client.utils.requests.request', autospec=True) class UserProfileDiscussionGroupIdTestCase(CohortedTestCase, CohortedTopicGroupIdTestMixin): cs_endpoint = "/active_threads" @@ -1183,7 +1183,7 @@ class UserProfileDiscussionGroupIdTestCase(CohortedTestCase, CohortedTopicGroupI verify_group_id_not_present(profiled_user=self.moderator, pass_group_id=False) -@patch('lms.lib.comment_client.utils.requests.request', autospec=True) +@patch('django_comment_common.comment_client.utils.requests.request', autospec=True) class FollowedThreadsDiscussionGroupIdTestCase(CohortedTestCase, CohortedTopicGroupIdTestMixin): cs_endpoint = "/subscribed_threads" @@ -1220,7 +1220,7 @@ class FollowedThreadsDiscussionGroupIdTestCase(CohortedTestCase, CohortedTopicGr ) -@patch('lms.lib.comment_client.utils.requests.request', autospec=True) +@patch('django_comment_common.comment_client.utils.requests.request', autospec=True) class InlineDiscussionTestCase(ForumsEnableMixin, ModuleStoreTestCase): def setUp(self): @@ -1480,7 +1480,7 @@ class InlineDiscussionUnicodeTestCase(ForumsEnableMixin, SharedModuleStoreTestCa def setUp(self): super(InlineDiscussionUnicodeTestCase, self).setUp() - @patch('lms.lib.comment_client.utils.requests.request', autospec=True) + @patch('django_comment_common.comment_client.utils.requests.request', autospec=True) def _test_unicode_data(self, text, mock_request): mock_request.side_effect = make_mock_request_impl(course=self.course, text=text) request = RequestFactory().get("dummy_url") @@ -1513,7 +1513,7 @@ class ForumFormDiscussionUnicodeTestCase(ForumsEnableMixin, SharedModuleStoreTes def setUp(self): super(ForumFormDiscussionUnicodeTestCase, self).setUp() - @patch('lms.lib.comment_client.utils.requests.request', autospec=True) + @patch('django_comment_common.comment_client.utils.requests.request', autospec=True) def _test_unicode_data(self, text, mock_request): mock_request.side_effect = make_mock_request_impl(course=self.course, text=text) request = RequestFactory().get("dummy_url") @@ -1528,7 +1528,7 @@ class ForumFormDiscussionUnicodeTestCase(ForumsEnableMixin, SharedModuleStoreTes @ddt.ddt -@patch('lms.lib.comment_client.utils.requests.request', autospec=True) +@patch('django_comment_common.comment_client.utils.requests.request', autospec=True) class ForumDiscussionXSSTestCase(ForumsEnableMixin, UrlResetMixin, ModuleStoreTestCase): @patch.dict("django.conf.settings.FEATURES", {"ENABLE_DISCUSSION_SERVICE": True}) @@ -1601,7 +1601,7 @@ class ForumDiscussionSearchUnicodeTestCase(ForumsEnableMixin, SharedModuleStoreT def setUp(self): super(ForumDiscussionSearchUnicodeTestCase, self).setUp() - @patch('lms.lib.comment_client.utils.requests.request', autospec=True) + @patch('django_comment_common.comment_client.utils.requests.request', autospec=True) def _test_unicode_data(self, text, mock_request): mock_request.side_effect = make_mock_request_impl(course=self.course, text=text) data = { @@ -1637,7 +1637,7 @@ class SingleThreadUnicodeTestCase(ForumsEnableMixin, SharedModuleStoreTestCase, def setUp(self): super(SingleThreadUnicodeTestCase, self).setUp() - @patch('lms.lib.comment_client.utils.requests.request', autospec=True) + @patch('django_comment_common.comment_client.utils.requests.request', autospec=True) def _test_unicode_data(self, text, mock_request): thread_id = "test_thread_id" mock_request.side_effect = make_mock_request_impl(course=self.course, text=text, thread_id=thread_id) @@ -1670,7 +1670,7 @@ class UserProfileUnicodeTestCase(ForumsEnableMixin, SharedModuleStoreTestCase, U def setUp(self): super(UserProfileUnicodeTestCase, self).setUp() - @patch('lms.lib.comment_client.utils.requests.request', autospec=True) + @patch('django_comment_common.comment_client.utils.requests.request', autospec=True) def _test_unicode_data(self, text, mock_request): mock_request.side_effect = make_mock_request_impl(course=self.course, text=text) request = RequestFactory().get("dummy_url") @@ -1702,7 +1702,7 @@ class FollowedThreadsUnicodeTestCase(ForumsEnableMixin, SharedModuleStoreTestCas def setUp(self): super(FollowedThreadsUnicodeTestCase, self).setUp() - @patch('lms.lib.comment_client.utils.requests.request', autospec=True) + @patch('django_comment_common.comment_client.utils.requests.request', autospec=True) def _test_unicode_data(self, text, mock_request): mock_request.side_effect = make_mock_request_impl(course=self.course, text=text) request = RequestFactory().get("dummy_url") @@ -1729,7 +1729,7 @@ class EnrollmentTestCase(ForumsEnableMixin, ModuleStoreTestCase): self.student = UserFactory.create() @patch.dict("django.conf.settings.FEATURES", {"ENABLE_DISCUSSION_SERVICE": True}) - @patch('lms.lib.comment_client.utils.requests.request', autospec=True) + @patch('django_comment_common.comment_client.utils.requests.request', autospec=True) def test_unenrolled(self, mock_request): mock_request.side_effect = make_mock_request_impl(course=self.course, text='dummy') request = RequestFactory().get('dummy_url') @@ -2111,7 +2111,7 @@ class ThreadViewedEventTestCase(EventTestMixin, ForumsEnableMixin, UrlResetMixin self.client.login(username=self.student.username, password=PASSWORD) @patch.dict("django.conf.settings.FEATURES", {"ENABLE_DISCUSSION_SERVICE": True}) - @patch('lms.lib.comment_client.utils.perform_request') + @patch('django_comment_common.comment_client.utils.perform_request') def test_thread_viewed_event(self, mock_perform_request): mock_perform_request.side_effect = make_mock_perform_request_impl( course=self.course, diff --git a/lms/djangoapps/discussion/views.py b/lms/djangoapps/discussion/views.py index c5de0f5be9..943d856e73 100644 --- a/lms/djangoapps/discussion/views.py +++ b/lms/djangoapps/discussion/views.py @@ -24,8 +24,8 @@ from rest_framework import status from web_fragments.fragment import Fragment import django_comment_client.utils as utils +import django_comment_common.comment_client as cc from lms.djangoapps.experiments.utils import get_experiment_user_metadata_context -import lms.lib.comment_client as cc from courseware.access import has_access from courseware.courses import get_course_with_access from courseware.views.views import CourseTabView diff --git a/lms/djangoapps/discussion_api/api.py b/lms/djangoapps/discussion_api/api.py index cbda8f99d1..c55f0716cf 100644 --- a/lms/djangoapps/discussion_api/api.py +++ b/lms/djangoapps/discussion_api/api.py @@ -26,6 +26,9 @@ from discussion_api.permissions import ( from discussion_api.serializers import CommentSerializer, DiscussionTopicSerializer, ThreadSerializer, get_context from django_comment_client.base.views import track_comment_created_event, track_thread_created_event, track_voted_event from django_comment_client.utils import get_accessible_discussion_xblocks, get_group_id_for_user, is_commentable_divided +from django_comment_common.comment_client.comment import Comment +from django_comment_common.comment_client.thread import Thread +from django_comment_common.comment_client.utils import CommentClientRequestError from django_comment_common.signals import ( comment_created, comment_deleted, @@ -39,9 +42,6 @@ from django_comment_common.signals import ( from django_comment_common.utils import get_course_discussion_settings from lms.djangoapps.courseware.exceptions import CourseAccessRedirect from lms.djangoapps.discussion_api.pagination import DiscussionAPIPagination -from lms.lib.comment_client.comment import Comment -from lms.lib.comment_client.thread import Thread -from lms.lib.comment_client.utils import CommentClientRequestError from openedx.core.djangoapps.user_api.accounts.views import AccountViewSet from openedx.core.lib.exceptions import CourseNotFoundError, DiscussionNotFoundError, PageNotFoundError diff --git a/lms/djangoapps/discussion_api/permissions.py b/lms/djangoapps/discussion_api/permissions.py index 37f0d2f6d3..3327c9fd1b 100644 --- a/lms/djangoapps/discussion_api/permissions.py +++ b/lms/djangoapps/discussion_api/permissions.py @@ -1,8 +1,8 @@ """ Discussion API permission logic """ -from lms.lib.comment_client.comment import Comment -from lms.lib.comment_client.thread import Thread +from django_comment_common.comment_client.comment import Comment +from django_comment_common.comment_client.thread import Thread def _is_author(cc_content, context): diff --git a/lms/djangoapps/discussion_api/serializers.py b/lms/djangoapps/discussion_api/serializers.py index 74e4fcb290..3c3165a594 100644 --- a/lms/djangoapps/discussion_api/serializers.py +++ b/lms/djangoapps/discussion_api/serializers.py @@ -19,12 +19,12 @@ from django_comment_common.models import ( FORUM_ROLE_MODERATOR, Role, ) +from django_comment_common.comment_client.comment import Comment +from django_comment_common.comment_client.thread import Thread +from django_comment_common.comment_client.user import User as CommentClientUser +from django_comment_common.comment_client.utils import CommentClientRequestError from django_comment_common.utils import get_course_discussion_settings from lms.djangoapps.django_comment_client.utils import course_discussion_division_enabled, get_group_names_by_id -from lms.lib.comment_client.comment import Comment -from lms.lib.comment_client.thread import Thread -from lms.lib.comment_client.user import User as CommentClientUser -from lms.lib.comment_client.utils import CommentClientRequestError from student.models import get_user_by_username_or_email diff --git a/lms/djangoapps/discussion_api/tests/test_permissions.py b/lms/djangoapps/discussion_api/tests/test_permissions.py index da407236ab..97a0c71edb 100644 --- a/lms/djangoapps/discussion_api/tests/test_permissions.py +++ b/lms/djangoapps/discussion_api/tests/test_permissions.py @@ -11,9 +11,9 @@ from discussion_api.permissions import ( get_initializable_comment_fields, get_initializable_thread_fields ) -from lms.lib.comment_client.comment import Comment -from lms.lib.comment_client.thread import Thread -from lms.lib.comment_client.user import User +from django_comment_common.comment_client.comment import Comment +from django_comment_common.comment_client.thread import Thread +from django_comment_common.comment_client.user import User from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase from xmodule.modulestore.tests.factories import CourseFactory diff --git a/lms/djangoapps/discussion_api/tests/test_serializers.py b/lms/djangoapps/discussion_api/tests/test_serializers.py index a92e1c0f85..77088e01f8 100644 --- a/lms/djangoapps/discussion_api/tests/test_serializers.py +++ b/lms/djangoapps/discussion_api/tests/test_serializers.py @@ -12,6 +12,8 @@ from django.test.client import RequestFactory from discussion_api.serializers import CommentSerializer, ThreadSerializer, get_context from discussion_api.tests.utils import CommentsServiceMockMixin, make_minimal_cs_comment, make_minimal_cs_thread from django_comment_client.tests.utils import ForumsEnableMixin +from django_comment_common.comment_client.comment import Comment +from django_comment_common.comment_client.thread import Thread from django_comment_common.models import ( FORUM_ROLE_ADMINISTRATOR, FORUM_ROLE_COMMUNITY_TA, @@ -19,8 +21,6 @@ from django_comment_common.models import ( FORUM_ROLE_STUDENT, Role ) -from lms.lib.comment_client.comment import Comment -from lms.lib.comment_client.thread import Thread from openedx.core.djangoapps.course_groups.tests.helpers import CohortFactory from student.tests.factories import UserFactory from util.testing import UrlResetMixin diff --git a/lms/djangoapps/discussion_api/views.py b/lms/djangoapps/discussion_api/views.py index 0000bb1563..01de167028 100644 --- a/lms/djangoapps/discussion_api/views.py +++ b/lms/djangoapps/discussion_api/views.py @@ -18,11 +18,11 @@ from rest_framework.viewsets import ViewSet from six import text_type from django_comment_client.utils import available_division_schemes +from django_comment_common import comment_client from django_comment_common.models import Role from django_comment_common.utils import get_course_discussion_settings, set_course_discussion_settings from instructor.access import update_forum_role -from lms.lib import comment_client from discussion.views import get_divided_discussions from discussion_api.api import ( create_comment, diff --git a/lms/djangoapps/django_comment_client/base/tests.py b/lms/djangoapps/django_comment_client/base/tests.py index 04eff93651..ab1c3a5ca4 100644 --- a/lms/djangoapps/django_comment_client/base/tests.py +++ b/lms/djangoapps/django_comment_client/base/tests.py @@ -26,6 +26,7 @@ from django_comment_client.tests.group_id import ( ) from django_comment_client.tests.unicode import UnicodeTestMixin from django_comment_client.tests.utils import CohortedTestCase, ForumsEnableMixin +from django_comment_common.comment_client import Thread from django_comment_common.models import ( assign_role, CourseDiscussionSettings, @@ -34,7 +35,6 @@ from django_comment_common.models import ( ) from django_comment_common.utils import ThreadContext, seed_permissions_roles, set_course_discussion_settings from lms.djangoapps.teams.tests.factories import CourseTeamFactory, CourseTeamMembershipFactory -from lms.lib.comment_client import Thread from openedx.core.djangoapps.course_groups.cohorts import set_course_cohorted from openedx.core.djangoapps.course_groups.tests.helpers import CohortFactory from openedx.core.djangoapps.waffle_utils.testutils import WAFFLE_TABLES @@ -72,7 +72,7 @@ class MockRequestSetupMixin(object): mock_request.return_value = self._create_response_mock(data) -@patch('lms.lib.comment_client.utils.requests.request', autospec=True) +@patch('django_comment_common.comment_client.utils.requests.request', autospec=True) class CreateThreadGroupIdTestCase( MockRequestSetupMixin, CohortedTestCase, @@ -107,7 +107,7 @@ class CreateThreadGroupIdTestCase( self._assert_json_response_contains_group_info(response) -@patch('lms.lib.comment_client.utils.requests.request', autospec=True) +@patch('django_comment_common.comment_client.utils.requests.request', autospec=True) @disable_signal(views, 'thread_edited') @disable_signal(views, 'thread_voted') @disable_signal(views, 'thread_deleted') @@ -365,7 +365,7 @@ class ViewsTestCaseMixin(object): @ddt.ddt -@patch('lms.lib.comment_client.utils.requests.request', autospec=True) +@patch('django_comment_common.comment_client.utils.requests.request', autospec=True) @disable_signal(views, 'thread_created') @disable_signal(views, 'thread_edited') class ViewsQueryCountTestCase( @@ -418,7 +418,7 @@ class ViewsQueryCountTestCase( @ddt.ddt -@patch('lms.lib.comment_client.utils.requests.request', autospec=True) +@patch('django_comment_common.comment_client.utils.requests.request', autospec=True) class ViewsTestCase( ForumsEnableMixin, UrlResetMixin, @@ -1062,7 +1062,7 @@ class ViewsTestCase( self.assertEqual(response.status_code, 200) -@patch("lms.lib.comment_client.utils.requests.request", autospec=True) +@patch("django_comment_common.comment_client.utils.requests.request", autospec=True) @disable_signal(views, 'comment_endorsed') class ViewPermissionsTestCase(ForumsEnableMixin, UrlResetMixin, SharedModuleStoreTestCase, MockRequestSetupMixin): @@ -1191,7 +1191,7 @@ class CreateThreadUnicodeTestCase( cls.student = UserFactory.create() CourseEnrollmentFactory(user=cls.student, course_id=cls.course.id) - @patch('lms.lib.comment_client.utils.requests.request', autospec=True) + @patch('django_comment_common.comment_client.utils.requests.request', autospec=True) def _test_unicode_data(self, text, mock_request,): """ Test to make sure unicode data in a thread doesn't break it. @@ -1234,7 +1234,7 @@ class UpdateThreadUnicodeTestCase( CourseEnrollmentFactory(user=cls.student, course_id=cls.course.id) @patch('django_comment_client.utils.get_discussion_categories_ids', return_value=["test_commentable"]) - @patch('lms.lib.comment_client.utils.requests.request', autospec=True) + @patch('django_comment_common.comment_client.utils.requests.request', autospec=True) def _test_unicode_data(self, text, mock_request, mock_get_discussion_id_map): self._set_mock_request_data(mock_request, { "user_id": str(self.student.id), @@ -1275,7 +1275,7 @@ class CreateCommentUnicodeTestCase( cls.student = UserFactory.create() CourseEnrollmentFactory(user=cls.student, course_id=cls.course.id) - @patch('lms.lib.comment_client.utils.requests.request', autospec=True) + @patch('django_comment_common.comment_client.utils.requests.request', autospec=True) def _test_unicode_data(self, text, mock_request): commentable_id = "non_team_dummy_id" self._set_mock_request_data(mock_request, { @@ -1322,7 +1322,7 @@ class UpdateCommentUnicodeTestCase( cls.student = UserFactory.create() CourseEnrollmentFactory(user=cls.student, course_id=cls.course.id) - @patch('lms.lib.comment_client.utils.requests.request', autospec=True) + @patch('django_comment_common.comment_client.utils.requests.request', autospec=True) def _test_unicode_data(self, text, mock_request): self._set_mock_request_data(mock_request, { "user_id": str(self.student.id), @@ -1362,7 +1362,7 @@ class CreateSubCommentUnicodeTestCase( cls.student = UserFactory.create() CourseEnrollmentFactory(user=cls.student, course_id=cls.course.id) - @patch('lms.lib.comment_client.utils.requests.request', autospec=True) + @patch('django_comment_common.comment_client.utils.requests.request', autospec=True) def _test_unicode_data(self, text, mock_request): """ Create a comment with unicode in it. @@ -1390,7 +1390,7 @@ class CreateSubCommentUnicodeTestCase( @ddt.ddt -@patch("lms.lib.comment_client.utils.requests.request", autospec=True) +@patch("django_comment_common.comment_client.utils.requests.request", autospec=True) @disable_signal(views, 'thread_voted') @disable_signal(views, 'thread_edited') @disable_signal(views, 'comment_created') @@ -1757,7 +1757,7 @@ class ForumEventTestCase(ForumsEnableMixin, SharedModuleStoreTestCase, MockReque CourseAccessRoleFactory(course_id=cls.course.id, user=cls.student, role='Wizard') @patch('eventtracking.tracker.emit') - @patch('lms.lib.comment_client.utils.requests.request', autospec=True) + @patch('django_comment_common.comment_client.utils.requests.request', autospec=True) def test_thread_created_event(self, __, mock_emit): request = RequestFactory().post( "dummy_url", { @@ -1786,7 +1786,7 @@ class ForumEventTestCase(ForumsEnableMixin, SharedModuleStoreTestCase, MockReque self.assertEquals(event['anonymous_to_peers'], False) @patch('eventtracking.tracker.emit') - @patch('lms.lib.comment_client.utils.requests.request', autospec=True) + @patch('django_comment_common.comment_client.utils.requests.request', autospec=True) def test_response_event(self, mock_request, mock_emit): """ Check to make sure an event is fired when a user responds to a thread. @@ -1812,7 +1812,7 @@ class ForumEventTestCase(ForumsEnableMixin, SharedModuleStoreTestCase, MockReque self.assertEqual(event['options']['followed'], True) @patch('eventtracking.tracker.emit') - @patch('lms.lib.comment_client.utils.requests.request', autospec=True) + @patch('django_comment_common.comment_client.utils.requests.request', autospec=True) def test_comment_event(self, mock_request, mock_emit): """ Ensure an event is fired when someone comments on a response. @@ -1839,7 +1839,7 @@ class ForumEventTestCase(ForumsEnableMixin, SharedModuleStoreTestCase, MockReque self.assertEqual(event['options']['followed'], False) @patch('eventtracking.tracker.emit') - @patch('lms.lib.comment_client.utils.requests.request', autospec=True) + @patch('django_comment_common.comment_client.utils.requests.request', autospec=True) @ddt.data(( 'create_thread', 'edx.forum.thread.created', { @@ -1891,7 +1891,7 @@ class ForumEventTestCase(ForumsEnableMixin, SharedModuleStoreTestCase, MockReque ) @ddt.unpack @patch('eventtracking.tracker.emit') - @patch('lms.lib.comment_client.utils.requests.request', autospec=True) + @patch('django_comment_common.comment_client.utils.requests.request', autospec=True) def test_thread_voted_event(self, view_name, obj_id_name, obj_type, mock_request, mock_emit): undo = view_name.startswith('undo') @@ -1953,7 +1953,7 @@ class UsersEndpointTestCase(ForumsEnableMixin, SharedModuleStoreTestCase, MockRe request.view_name = "users" return views.users(request, course_id=text_type(course_id)) - @patch('lms.lib.comment_client.utils.requests.request', autospec=True) + @patch('django_comment_common.comment_client.utils.requests.request', autospec=True) def test_finds_exact_match(self, mock_request): self.set_post_counts(mock_request) response = self.make_request(username="other") @@ -1963,7 +1963,7 @@ class UsersEndpointTestCase(ForumsEnableMixin, SharedModuleStoreTestCase, MockRe [{"id": self.other_user.id, "username": self.other_user.username}] ) - @patch('lms.lib.comment_client.utils.requests.request', autospec=True) + @patch('django_comment_common.comment_client.utils.requests.request', autospec=True) def test_finds_no_match(self, mock_request): self.set_post_counts(mock_request) response = self.make_request(username="othor") @@ -2000,7 +2000,7 @@ class UsersEndpointTestCase(ForumsEnableMixin, SharedModuleStoreTestCase, MockRe self.assertIn("errors", content) self.assertNotIn("users", content) - @patch('lms.lib.comment_client.utils.requests.request', autospec=True) + @patch('django_comment_common.comment_client.utils.requests.request', autospec=True) def test_requires_matched_user_has_forum_content(self, mock_request): self.set_post_counts(mock_request, 0, 0) response = self.make_request(username="other") diff --git a/lms/djangoapps/django_comment_client/base/views.py b/lms/djangoapps/django_comment_client/base/views.py index bcb26950b1..1998f614df 100644 --- a/lms/djangoapps/django_comment_client/base/views.py +++ b/lms/djangoapps/django_comment_client/base/views.py @@ -21,7 +21,7 @@ from opaque_keys.edx.keys import CourseKey from six import text_type import django_comment_client.settings as cc_settings -import lms.lib.comment_client as cc +import django_comment_common.comment_client as cc from courseware.access import has_access from courseware.courses import get_course_by_id, get_course_overview_with_access, get_course_with_access from django_comment_client.permissions import check_permissions_by_view, get_team, has_permission diff --git a/lms/djangoapps/django_comment_client/management/commands/reload_forum_users.py b/lms/djangoapps/django_comment_client/management/commands/reload_forum_users.py index a428616094..a561722e3b 100644 --- a/lms/djangoapps/django_comment_client/management/commands/reload_forum_users.py +++ b/lms/djangoapps/django_comment_client/management/commands/reload_forum_users.py @@ -3,7 +3,7 @@ Reload forum (comment client) users from existing users. """ from __future__ import print_function -import lms.lib.comment_client as cc +import django_comment_common.comment_client as cc from django.contrib.auth.models import User from django.core.management.base import BaseCommand diff --git a/lms/djangoapps/django_comment_client/management/commands/sync_user_info.py b/lms/djangoapps/django_comment_client/management/commands/sync_user_info.py index ab64e570ee..03d8998bd4 100644 --- a/lms/djangoapps/django_comment_client/management/commands/sync_user_info.py +++ b/lms/djangoapps/django_comment_client/management/commands/sync_user_info.py @@ -3,7 +3,7 @@ One-off script to sync all user information to the discussion service (later info will be synced automatically) """ -import lms.lib.comment_client as cc +import django_comment_common.comment_client as cc from django.contrib.auth.models import User from django.core.management.base import BaseCommand diff --git a/lms/djangoapps/django_comment_client/middleware.py b/lms/djangoapps/django_comment_client/middleware.py index 84d033566e..8396d6652b 100644 --- a/lms/djangoapps/django_comment_client/middleware.py +++ b/lms/djangoapps/django_comment_client/middleware.py @@ -4,7 +4,7 @@ import logging from six import text_type from django_comment_client.utils import JsonError -from lms.lib.comment_client import CommentClientRequestError +from django_comment_common.comment_client import CommentClientRequestError log = logging.getLogger(__name__) diff --git a/lms/djangoapps/django_comment_client/permissions.py b/lms/djangoapps/django_comment_client/permissions.py index cc187880e2..4c4146cf50 100644 --- a/lms/djangoapps/django_comment_client/permissions.py +++ b/lms/djangoapps/django_comment_client/permissions.py @@ -8,10 +8,10 @@ from types import NoneType from edx_django_utils.cache import DEFAULT_REQUEST_CACHE from opaque_keys.edx.keys import CourseKey +from django_comment_common.comment_client import Thread from django_comment_common.models import CourseDiscussionSettings, all_permissions_for_user_in_course from django_comment_common.utils import get_course_discussion_settings from lms.djangoapps.teams.models import CourseTeam -from lms.lib.comment_client import Thread from openedx.core.lib.cache_utils import request_cached diff --git a/lms/djangoapps/django_comment_client/tests/test_middleware.py b/lms/djangoapps/django_comment_client/tests/test_middleware.py index c6346f95b5..e90756bf2f 100644 --- a/lms/djangoapps/django_comment_client/tests/test_middleware.py +++ b/lms/djangoapps/django_comment_client/tests/test_middleware.py @@ -5,7 +5,7 @@ from django.test import TestCase from six import text_type import django_comment_client.middleware as middleware -import lms.lib.comment_client +import django_comment_common.comment_client class AjaxExceptionTestCase(TestCase): @@ -15,9 +15,9 @@ class AjaxExceptionTestCase(TestCase): self.a = middleware.AjaxExceptionMiddleware() self.request1 = django.http.HttpRequest() self.request0 = django.http.HttpRequest() - self.exception1 = lms.lib.comment_client.CommentClientRequestError('{}', 401) - self.exception2 = lms.lib.comment_client.CommentClientRequestError('Foo!', 404) - self.exception0 = lms.lib.comment_client.CommentClient500Error("Holy crap the server broke!") + self.exception1 = django_comment_common.comment_client.CommentClientRequestError('{}', 401) + self.exception2 = django_comment_common.comment_client.CommentClientRequestError('Foo!', 404) + self.exception0 = django_comment_common.comment_client.CommentClient500Error("Holy crap the server broke!") self.request1.META['HTTP_X_REQUESTED_WITH'] = "XMLHttpRequest" self.request0.META['HTTP_X_REQUESTED_WITH'] = "SHADOWFAX" diff --git a/lms/djangoapps/django_comment_client/tests/test_utils.py b/lms/djangoapps/django_comment_client/tests/test_utils.py index 430ce33e64..9a59dad763 100644 --- a/lms/djangoapps/django_comment_client/tests/test_utils.py +++ b/lms/djangoapps/django_comment_client/tests/test_utils.py @@ -21,6 +21,7 @@ from django_comment_client.constants import TYPE_ENTRY, TYPE_SUBCATEGORY from django_comment_client.tests.factories import RoleFactory from django_comment_client.tests.unicode import UnicodeTestMixin from django_comment_client.tests.utils import config_course_discussions, topic_name_to_id +from django_comment_common.comment_client.utils import CommentClientMaintenanceError, perform_request from django_comment_common.models import ( CourseDiscussionSettings, ForumsConfig, @@ -33,7 +34,6 @@ from django_comment_common.utils import ( set_course_discussion_settings ) from lms.djangoapps.teams.tests.factories import CourseTeamFactory -from lms.lib.comment_client.utils import CommentClientMaintenanceError, perform_request from openedx.core.djangoapps.course_groups import cohorts from openedx.core.djangoapps.course_groups.cohorts import set_course_cohorted from openedx.core.djangoapps.course_groups.tests.helpers import CohortFactory, config_course_cohorts diff --git a/openedx/core/djangoapps/user_authn/views/tests/test_register.py b/openedx/core/djangoapps/user_authn/views/tests/test_register.py index 6b1f2d4e0e..78874e0cef 100644 --- a/openedx/core/djangoapps/user_authn/views/tests/test_register.py +++ b/openedx/core/djangoapps/user_authn/views/tests/test_register.py @@ -768,8 +768,11 @@ class TestCreateAccountValidation(TestCase): @mock.patch.dict("student.models.settings.FEATURES", {"ENABLE_DISCUSSION_SERVICE": True}) -@mock.patch("lms.lib.comment_client.User.base_url", TEST_CS_URL) -@mock.patch("lms.lib.comment_client.utils.requests.request", return_value=mock.Mock(status_code=200, text='{}')) +@mock.patch("django_comment_common.comment_client.User.base_url", TEST_CS_URL) +@mock.patch( + "django_comment_common.comment_client.utils.requests.request", + return_value=mock.Mock(status_code=200, text='{}') +) class TestCreateCommentsServiceUser(TransactionTestCase): """ Tests for creating comments service user. """