From 54d34e834d5a108f03db59a1e0f6b97e2afae7d0 Mon Sep 17 00:00:00 2001 From: Sanford Student Date: Thu, 6 Oct 2016 10:09:07 -0400 Subject: [PATCH] update all references to instructor module --- lms/djangoapps/bulk_email/tasks.py | 4 +- lms/djangoapps/bulk_email/tests/test_email.py | 2 +- .../bulk_email/tests/test_err_handling.py | 6 +- lms/djangoapps/bulk_email/tests/test_tasks.py | 10 +- lms/djangoapps/certificates/models.py | 2 +- .../certificates/tests/test_models.py | 2 +- lms/djangoapps/certificates/views/support.py | 2 +- lms/djangoapps/instructor/tests/test_api.py | 62 ++++++------ lms/djangoapps/instructor/views/api.py | 86 ++++++++++------- .../views/instructor_task_helpers.py | 2 +- lms/djangoapps/instructor_task/api.py | 6 +- lms/djangoapps/instructor_task/api_helper.py | 2 +- lms/djangoapps/instructor_task/subtasks.py | 2 +- lms/djangoapps/instructor_task/tasks.py | 2 +- .../instructor_task/tasks_helper.py | 2 +- .../instructor_task/tests/factories.py | 2 +- .../instructor_task/tests/test_api.py | 12 +-- .../instructor_task/tests/test_base.py | 8 +- .../instructor_task/tests/test_integration.py | 20 ++-- .../instructor_task/tests/test_models.py | 4 +- .../instructor_task/tests/test_subtasks.py | 8 +- .../instructor_task/tests/test_tasks.py | 22 ++--- .../tests/test_tasks_helper.py | 96 ++++++++++--------- .../instructor_task/tests/test_views.py | 12 ++- lms/djangoapps/instructor_task/views.py | 5 +- lms/envs/acceptance.py | 2 +- lms/envs/common.py | 2 +- lms/urls.py | 2 +- 28 files changed, 211 insertions(+), 176 deletions(-) diff --git a/lms/djangoapps/bulk_email/tasks.py b/lms/djangoapps/bulk_email/tasks.py index 8e89892713..e6dca1f895 100644 --- a/lms/djangoapps/bulk_email/tasks.py +++ b/lms/djangoapps/bulk_email/tasks.py @@ -39,8 +39,8 @@ from django.core.urlresolvers import reverse from bulk_email.models import CourseEmail, Optout from courseware.courses import get_course from openedx.core.lib.courses import course_image_url -from instructor_task.models import InstructorTask -from instructor_task.subtasks import ( +from lms.djangoapps.instructor_task.models import InstructorTask +from lms.djangoapps.instructor_task.subtasks import ( SubtaskStatus, queue_subtasks_for_query, check_subtask_is_valid, diff --git a/lms/djangoapps/bulk_email/tests/test_email.py b/lms/djangoapps/bulk_email/tests/test_email.py index fefc497b2f..d79604ad79 100644 --- a/lms/djangoapps/bulk_email/tests/test_email.py +++ b/lms/djangoapps/bulk_email/tests/test_email.py @@ -21,7 +21,7 @@ from bulk_email.tasks import _get_source_address, _get_course_email_context from openedx.core.djangoapps.course_groups.models import CourseCohort from openedx.core.djangoapps.course_groups.cohorts import add_user_to_cohort from courseware.tests.factories import StaffFactory, InstructorFactory -from instructor_task.subtasks import update_subtask_status +from lms.djangoapps.instructor_task.subtasks import update_subtask_status from student.roles import CourseStaffRole from student.models import CourseEnrollment from student.tests.factories import CourseEnrollmentFactory, UserFactory diff --git a/lms/djangoapps/bulk_email/tests/test_err_handling.py b/lms/djangoapps/bulk_email/tests/test_err_handling.py index f1bdcbe5df..6a3a46f7b8 100644 --- a/lms/djangoapps/bulk_email/tests/test_err_handling.py +++ b/lms/djangoapps/bulk_email/tests/test_err_handling.py @@ -16,8 +16,8 @@ from smtplib import SMTPDataError, SMTPServerDisconnected, SMTPConnectError from bulk_email.models import CourseEmail, SEND_TO_MYSELF, BulkEmailFlag from bulk_email.tasks import perform_delegate_email_batches, send_course_email -from instructor_task.models import InstructorTask -from instructor_task.subtasks import ( +from lms.djangoapps.instructor_task.models import InstructorTask +from lms.djangoapps.instructor_task.subtasks import ( initialize_subtask_info, SubtaskStatus, check_subtask_is_valid, @@ -344,7 +344,7 @@ class TestEmailErrors(ModuleStoreTestCase): bogus_email_id = 1001 to_list = ['test@test.com'] global_email_context = {'course_title': 'dummy course'} - with patch('instructor_task.subtasks.InstructorTask.save') as mock_task_save: + with patch('lms.djangoapps.instructor_task.subtasks.InstructorTask.save') as mock_task_save: mock_task_save.side_effect = DatabaseError with self.assertRaises(DatabaseError): send_course_email(entry_id, bogus_email_id, to_list, global_email_context, subtask_status.to_dict()) diff --git a/lms/djangoapps/bulk_email/tests/test_tasks.py b/lms/djangoapps/bulk_email/tests/test_tasks.py index b0ae98eab1..c5eca9edd8 100644 --- a/lms/djangoapps/bulk_email/tests/test_tasks.py +++ b/lms/djangoapps/bulk_email/tests/test_tasks.py @@ -35,11 +35,11 @@ from xmodule.modulestore.tests.factories import CourseFactory from bulk_email.models import CourseEmail, Optout, SEND_TO_MYSELF, SEND_TO_STAFF, SEND_TO_LEARNERS from bulk_email.tasks import _get_course_email_context -from instructor_task.tasks import send_bulk_course_email -from instructor_task.subtasks import update_subtask_status, SubtaskStatus -from instructor_task.models import InstructorTask -from instructor_task.tests.test_base import InstructorTaskCourseTestCase -from instructor_task.tests.factories import InstructorTaskFactory +from lms.djangoapps.instructor_task.tasks import send_bulk_course_email +from lms.djangoapps.instructor_task.subtasks import update_subtask_status, SubtaskStatus +from lms.djangoapps.instructor_task.models import InstructorTask +from lms.djangoapps.instructor_task.tests.test_base import InstructorTaskCourseTestCase +from lms.djangoapps.instructor_task.tests.factories import InstructorTaskFactory from opaque_keys.edx.locations import SlashSeparatedCourseKey diff --git a/lms/djangoapps/certificates/models.py b/lms/djangoapps/certificates/models.py index 748e84b8bf..f87b5c7b5d 100644 --- a/lms/djangoapps/certificates/models.py +++ b/lms/djangoapps/certificates/models.py @@ -66,7 +66,7 @@ from openedx.core.djangoapps.signals.signals import COURSE_CERT_AWARDED from badges.events.course_complete import course_badge_check from badges.events.course_meta import completion_check, course_group_check from config_models.models import ConfigurationModel -from instructor_task.models import InstructorTask +from lms.djangoapps.instructor_task.models import InstructorTask from util.milestones_helpers import fulfill_course_milestone, is_prerequisite_courses_enabled from openedx.core.djangoapps.xmodule_django.models import CourseKeyField, NoneToEmptyManager diff --git a/lms/djangoapps/certificates/tests/test_models.py b/lms/djangoapps/certificates/tests/test_models.py index 0c572478bb..928b5086e1 100644 --- a/lms/djangoapps/certificates/tests/test_models.py +++ b/lms/djangoapps/certificates/tests/test_models.py @@ -24,7 +24,7 @@ from certificates.tests.factories import ( CertificateInvalidationFactory, GeneratedCertificateFactory ) -from instructor_task.tests.factories import InstructorTaskFactory +from lms.djangoapps.instructor_task.tests.factories import InstructorTaskFactory from opaque_keys.edx.locator import CourseLocator from student.tests.factories import AdminFactory, UserFactory from xmodule.modulestore.tests.django_utils import SharedModuleStoreTestCase diff --git a/lms/djangoapps/certificates/views/support.py b/lms/djangoapps/certificates/views/support.py index e24476d454..dc879b10f2 100644 --- a/lms/djangoapps/certificates/views/support.py +++ b/lms/djangoapps/certificates/views/support.py @@ -22,7 +22,7 @@ from django.utils.translation import ugettext as _ from certificates import api from certificates.models import CertificateInvalidation from courseware.access import has_access -from instructor_task.api import generate_certificates_for_students +from lms.djangoapps.instructor_task.api import generate_certificates_for_students from opaque_keys import InvalidKeyError from opaque_keys.edx.keys import CourseKey from openedx.core.djangoapps.content.course_overviews.models import CourseOverview diff --git a/lms/djangoapps/instructor/tests/test_api.py b/lms/djangoapps/instructor/tests/test_api.py index 9ac11ad3f2..c8feee3ed5 100644 --- a/lms/djangoapps/instructor/tests/test_api.py +++ b/lms/djangoapps/instructor/tests/test_api.py @@ -58,12 +58,12 @@ from xmodule.fields import Date from courseware.models import StudentFieldOverride -import instructor_task.api +import lms.djangoapps.instructor_task.api import lms.djangoapps.instructor.views.api from lms.djangoapps.instructor.views.api import require_finance_admin from lms.djangoapps.instructor.tests.utils import FakeContentTask, FakeEmail, FakeEmailInfo from lms.djangoapps.instructor.views.api import _split_input_list, common_exceptions_400, generate_unique_password -from instructor_task.api_helper import AlreadyRunningError +from lms.djangoapps.instructor_task.api_helper import AlreadyRunningError from certificates.tests.factories import GeneratedCertificateFactory from certificates.models import CertificateStatuses @@ -86,37 +86,37 @@ REPORTS_DATA = ( { 'report_type': 'grade', 'instructor_api_endpoint': 'calculate_grades_csv', - 'task_api_endpoint': 'instructor_task.api.submit_calculate_grades_csv', + 'task_api_endpoint': 'lms.djangoapps.instructor_task.api.submit_calculate_grades_csv', 'extra_instructor_api_kwargs': {} }, { 'report_type': 'enrolled learner profile', 'instructor_api_endpoint': 'get_students_features', - 'task_api_endpoint': 'instructor_task.api.submit_calculate_students_features_csv', + 'task_api_endpoint': 'lms.djangoapps.instructor_task.api.submit_calculate_students_features_csv', 'extra_instructor_api_kwargs': {'csv': '/csv'} }, { 'report_type': 'detailed enrollment', 'instructor_api_endpoint': 'get_enrollment_report', - 'task_api_endpoint': 'instructor_task.api.submit_detailed_enrollment_features_csv', + 'task_api_endpoint': 'lms.djangoapps.instructor_task.api.submit_detailed_enrollment_features_csv', 'extra_instructor_api_kwargs': {} }, { 'report_type': 'enrollment', 'instructor_api_endpoint': 'get_students_who_may_enroll', - 'task_api_endpoint': 'instructor_task.api.submit_calculate_may_enroll_csv', + 'task_api_endpoint': 'lms.djangoapps.instructor_task.api.submit_calculate_may_enroll_csv', 'extra_instructor_api_kwargs': {}, }, { 'report_type': 'proctored exam results', 'instructor_api_endpoint': 'get_proctored_exam_results', - 'task_api_endpoint': 'instructor_task.api.submit_proctored_exam_results_report', + 'task_api_endpoint': 'lms.djangoapps.instructor_task.api.submit_proctored_exam_results_report', 'extra_instructor_api_kwargs': {}, }, { 'report_type': 'problem responses', 'instructor_api_endpoint': 'get_problem_responses', - 'task_api_endpoint': 'instructor_task.api.submit_calculate_problem_responses_csv', + 'task_api_endpoint': 'lms.djangoapps.instructor_task.api.submit_calculate_problem_responses_csv', 'extra_instructor_api_kwargs': {}, } ) @@ -126,7 +126,7 @@ EXECUTIVE_SUMMARY_DATA = ( { 'report_type': 'executive summary', 'instructor_api_endpoint': 'get_exec_summary_report', - 'task_api_endpoint': 'instructor_task.api.submit_executive_summary_report', + 'task_api_endpoint': 'lms.djangoapps.instructor_task.api.submit_executive_summary_report', 'extra_instructor_api_kwargs': {} }, ) @@ -2657,7 +2657,7 @@ class TestInstructorAPILevelsDataDump(SharedModuleStoreTestCase, LoginEnrollment kwargs={'course_id': unicode(self.course.id)} ) - with patch('instructor_task.api.submit_calculate_problem_responses_csv') as submit_task_function: + with patch('lms.djangoapps.instructor_task.api.submit_calculate_problem_responses_csv') as submit_task_function: error = AlreadyRunningError() submit_task_function.side_effect = error response = self.client.post(url, {}) @@ -2737,7 +2737,7 @@ class TestInstructorAPILevelsDataDump(SharedModuleStoreTestCase, LoginEnrollment self.assertIn('status', res_json) self.assertNotIn('currently being created', res_json['status']) # CSV generation already in progress: - with patch('instructor_task.api.submit_calculate_may_enroll_csv') as submit_task_function: + with patch('lms.djangoapps.instructor_task.api.submit_calculate_may_enroll_csv') as submit_task_function: error = AlreadyRunningError() submit_task_function.side_effect = error response = self.client.post(url, {}) @@ -2760,7 +2760,7 @@ class TestInstructorAPILevelsDataDump(SharedModuleStoreTestCase, LoginEnrollment self.assertIn('status', res_json) self.assertNotIn('currently being created', res_json['status']) # CSV generation already in progress: - with patch('instructor_task.api.submit_proctored_exam_results_report') as submit_task_function: + with patch('lms.djangoapps.instructor_task.api.submit_proctored_exam_results_report') as submit_task_function: error = AlreadyRunningError() submit_task_function.side_effect = error response = self.client.post(url, {}) @@ -2974,7 +2974,7 @@ class TestInstructorAPILevelsDataDump(SharedModuleStoreTestCase, LoginEnrollment def test_list_report_downloads(self): url = reverse('list_report_downloads', kwargs={'course_id': self.course.id.to_deprecated_string()}) - with patch('instructor_task.models.DjangoStorageReportStore.links_for') as mock_links_for: + with patch('lms.djangoapps.instructor_task.models.DjangoStorageReportStore.links_for') as mock_links_for: mock_links_for.return_value = [ ('mock_file_name_1', 'https://1.mock.url'), ('mock_file_name_2', 'https://2.mock.url'), @@ -3064,7 +3064,7 @@ class TestInstructorAPILevelsDataDump(SharedModuleStoreTestCase, LoginEnrollment def test_get_ora2_responses_success(self): url = reverse('export_ora2_data', kwargs={'course_id': unicode(self.course.id)}) - with patch('instructor_task.api.submit_export_ora2_data') as mock_submit_ora2_task: + with patch('lms.djangoapps.instructor_task.api.submit_export_ora2_data') as mock_submit_ora2_task: mock_submit_ora2_task.return_value = True response = self.client.post(url, {}) success_status = "The ORA data report is being generated." @@ -3073,7 +3073,7 @@ class TestInstructorAPILevelsDataDump(SharedModuleStoreTestCase, LoginEnrollment def test_get_ora2_responses_already_running(self): url = reverse('export_ora2_data', kwargs={'course_id': unicode(self.course.id)}) - with patch('instructor_task.api.submit_export_ora2_data') as mock_submit_ora2_task: + with patch('lms.djangoapps.instructor_task.api.submit_export_ora2_data') as mock_submit_ora2_task: mock_submit_ora2_task.side_effect = AlreadyRunningError() response = self.client.post(url, {}) already_running_status = "An ORA data report generation task is already in progress." @@ -3170,7 +3170,7 @@ class TestInstructorAPIRegradeTask(SharedModuleStoreTestCase, LoginEnrollmentTes ) # mock out the function which should be called to execute the action. - @patch.object(instructor_task.api, 'submit_reset_problem_attempts_for_all_students') + @patch.object(lms.djangoapps.instructor_task.api, 'submit_reset_problem_attempts_for_all_students') def test_reset_student_attempts_all(self, act): """ Test reset all student attempts. """ url = reverse('reset_student_attempts', kwargs={'course_id': self.course.id.to_deprecated_string()}) @@ -3220,7 +3220,7 @@ class TestInstructorAPIRegradeTask(SharedModuleStoreTestCase, LoginEnrollmentTes }) self.assertEqual(response.status_code, 400) - @patch.object(instructor_task.api, 'submit_rescore_problem_for_student') + @patch.object(lms.djangoapps.instructor_task.api, 'submit_rescore_problem_for_student') def test_rescore_problem_single(self, act): """ Test rescoring of a single student. """ url = reverse('rescore_problem', kwargs={'course_id': self.course.id.to_deprecated_string()}) @@ -3231,7 +3231,7 @@ class TestInstructorAPIRegradeTask(SharedModuleStoreTestCase, LoginEnrollmentTes self.assertEqual(response.status_code, 200) self.assertTrue(act.called) - @patch.object(instructor_task.api, 'submit_rescore_problem_for_student') + @patch.object(lms.djangoapps.instructor_task.api, 'submit_rescore_problem_for_student') def test_rescore_problem_single_from_uname(self, act): """ Test rescoring of a single student. """ url = reverse('rescore_problem', kwargs={'course_id': self.course.id.to_deprecated_string()}) @@ -3242,7 +3242,7 @@ class TestInstructorAPIRegradeTask(SharedModuleStoreTestCase, LoginEnrollmentTes self.assertEqual(response.status_code, 200) self.assertTrue(act.called) - @patch.object(instructor_task.api, 'submit_rescore_problem_for_all_students') + @patch.object(lms.djangoapps.instructor_task.api, 'submit_rescore_problem_for_all_students') def test_rescore_problem_all(self, act): """ Test rescoring for all students. """ url = reverse('rescore_problem', kwargs={'course_id': self.course.id.to_deprecated_string()}) @@ -3395,7 +3395,7 @@ class TestEntranceExamInstructorAPIRegradeTask(SharedModuleStoreTestCase, LoginE ) # mock out the function which should be called to execute the action. - @patch.object(instructor_task.api, 'submit_reset_problem_attempts_in_entrance_exam') + @patch.object(lms.djangoapps.instructor_task.api, 'submit_reset_problem_attempts_in_entrance_exam') def test_reset_entrance_exam_all_student_attempts(self, act): """ Test reset all student attempts for entrance exam. """ url = reverse('reset_student_attempts_for_entrance_exam', @@ -3451,7 +3451,7 @@ class TestEntranceExamInstructorAPIRegradeTask(SharedModuleStoreTestCase, LoginE }) self.assertEqual(response.status_code, 400) - @patch.object(instructor_task.api, 'submit_rescore_entrance_exam_for_student') + @patch.object(lms.djangoapps.instructor_task.api, 'submit_rescore_entrance_exam_for_student') def test_rescore_entrance_exam_single_student(self, act): """ Test re-scoring of entrance exam for single student. """ url = reverse('rescore_entrance_exam', kwargs={'course_id': unicode(self.course.id)}) @@ -3728,7 +3728,7 @@ class TestInstructorAPITaskLists(SharedModuleStoreTestCase, LoginEnrollmentTestC self.tasks = [self.FakeTask(mock_factory.mock_get_task_completion_info) for _ in xrange(7)] self.tasks[-1].make_invalid_output() - @patch.object(instructor_task.api, 'get_running_instructor_tasks') + @patch.object(lms.djangoapps.instructor_task.api, 'get_running_instructor_tasks') def test_list_instructor_tasks_running(self, act): """ Test list of all running tasks. """ act.return_value = self.tasks @@ -3749,7 +3749,7 @@ class TestInstructorAPITaskLists(SharedModuleStoreTestCase, LoginEnrollmentTestC self.assertDictEqual(exp_task, act_task) self.assertEqual(actual_tasks, expected_tasks) - @patch.object(instructor_task.api, 'get_instructor_task_history') + @patch.object(lms.djangoapps.instructor_task.api, 'get_instructor_task_history') def test_list_background_email_tasks(self, act): """Test list of background email tasks.""" act.return_value = self.tasks @@ -3770,7 +3770,7 @@ class TestInstructorAPITaskLists(SharedModuleStoreTestCase, LoginEnrollmentTestC self.assertDictEqual(exp_task, act_task) self.assertEqual(actual_tasks, expected_tasks) - @patch.object(instructor_task.api, 'get_instructor_task_history') + @patch.object(lms.djangoapps.instructor_task.api, 'get_instructor_task_history') def test_list_instructor_tasks_problem(self, act): """ Test list task history for problem. """ act.return_value = self.tasks @@ -3793,7 +3793,7 @@ class TestInstructorAPITaskLists(SharedModuleStoreTestCase, LoginEnrollmentTestC self.assertDictEqual(exp_task, act_task) self.assertEqual(actual_tasks, expected_tasks) - @patch.object(instructor_task.api, 'get_instructor_task_history') + @patch.object(lms.djangoapps.instructor_task.api, 'get_instructor_task_history') def test_list_instructor_tasks_problem_student(self, act): """ Test list task history for problem AND student. """ act.return_value = self.tasks @@ -3820,7 +3820,7 @@ class TestInstructorAPITaskLists(SharedModuleStoreTestCase, LoginEnrollmentTestC @attr(shard=1) -@patch.object(instructor_task.api, 'get_instructor_task_history', autospec=True) +@patch.object(lms.djangoapps.instructor_task.api, 'get_instructor_task_history', autospec=True) class TestInstructorEmailContentList(SharedModuleStoreTestCase, LoginEnrollmentTestCase): """ Test the instructor email content history endpoint. @@ -4954,7 +4954,7 @@ class TestBulkCohorting(SharedModuleStoreTestCase): response = self.call_add_users_to_cohorts('') self.assertEqual(response.status_code, 403) - @patch('lms.djangoapps.instructor.views.api.instructor_task.api.submit_cohort_students') + @patch('lms.djangoapps.instructor.views.api.lms.djangoapps.instructor_task.api.submit_cohort_students') @patch('lms.djangoapps.instructor.views.api.store_uploaded_file') def test_success_username(self, mock_store_upload, mock_cohort_task): """ @@ -4965,7 +4965,7 @@ class TestBulkCohorting(SharedModuleStoreTestCase): 'username,cohort\nfoo_username,bar_cohort', mock_store_upload, mock_cohort_task ) - @patch('lms.djangoapps.instructor.views.api.instructor_task.api.submit_cohort_students') + @patch('lms.djangoapps.instructor.views.api.lms.djangoapps.instructor_task.api.submit_cohort_students') @patch('lms.djangoapps.instructor.views.api.store_uploaded_file') def test_success_email(self, mock_store_upload, mock_cohort_task): """ @@ -4976,7 +4976,7 @@ class TestBulkCohorting(SharedModuleStoreTestCase): 'email,cohort\nfoo_email,bar_cohort', mock_store_upload, mock_cohort_task ) - @patch('lms.djangoapps.instructor.views.api.instructor_task.api.submit_cohort_students') + @patch('lms.djangoapps.instructor.views.api.lms.djangoapps.instructor_task.api.submit_cohort_students') @patch('lms.djangoapps.instructor.views.api.store_uploaded_file') def test_success_username_and_email(self, mock_store_upload, mock_cohort_task): """ @@ -4987,7 +4987,7 @@ class TestBulkCohorting(SharedModuleStoreTestCase): 'username,email,cohort\nfoo_username,bar_email,baz_cohort', mock_store_upload, mock_cohort_task ) - @patch('lms.djangoapps.instructor.views.api.instructor_task.api.submit_cohort_students') + @patch('lms.djangoapps.instructor.views.api.lms.djangoapps.instructor_task.api.submit_cohort_students') @patch('lms.djangoapps.instructor.views.api.store_uploaded_file') def test_success_carriage_return(self, mock_store_upload, mock_cohort_task): """ @@ -4998,7 +4998,7 @@ class TestBulkCohorting(SharedModuleStoreTestCase): 'username,email,cohort\rfoo_username,bar_email,baz_cohort', mock_store_upload, mock_cohort_task ) - @patch('lms.djangoapps.instructor.views.api.instructor_task.api.submit_cohort_students') + @patch('lms.djangoapps.instructor.views.api.lms.djangoapps.instructor_task.api.submit_cohort_students') @patch('lms.djangoapps.instructor.views.api.store_uploaded_file') def test_success_carriage_return_line_feed(self, mock_store_upload, mock_cohort_task): """ diff --git a/lms/djangoapps/instructor/views/api.py b/lms/djangoapps/instructor/views/api.py index cc20d0241a..42e1a8055c 100644 --- a/lms/djangoapps/instructor/views/api.py +++ b/lms/djangoapps/instructor/views/api.py @@ -65,9 +65,9 @@ from student.models import ( ENROLLED_TO_ENROLLED, ENROLLED_TO_UNENROLLED, UNENROLLED_TO_ENROLLED, UNENROLLED_TO_UNENROLLED, ALLOWEDTOENROLL_TO_UNENROLLED, DEFAULT_TRANSITION_STATE ) -import instructor_task.api -from instructor_task.api_helper import AlreadyRunningError -from instructor_task.models import ReportStore +import lms.djangoapps.instructor_task.api +from lms.djangoapps.instructor_task.api_helper import AlreadyRunningError +from lms.djangoapps.instructor_task.models import ReportStore import lms.djangoapps.instructor.enrollment as enrollment from lms.djangoapps.instructor.enrollment import ( get_user_email_language, @@ -967,7 +967,7 @@ def get_problem_responses(request, course_id): return JsonResponseBadRequest(_("Could not find problem with this location.")) try: - instructor_task.api.submit_calculate_problem_responses_csv(request, course_key, problem_location) + lms.djangoapps.instructor_task.api.submit_calculate_problem_responses_csv(request, course_key, problem_location) success_status = _( "The problem responses report is being created." " To view the status of the report, see Pending Tasks below." @@ -1261,7 +1261,11 @@ def get_students_features(request, course_id, csv=False): # pylint: disable=red return JsonResponse(response_payload) else: try: - instructor_task.api.submit_calculate_students_features_csv(request, course_key, query_features) + lms.djangoapps.instructor_task.api.submit_calculate_students_features_csv( + request, + course_key, + query_features + ) success_status = _("The enrolled learner profile report is being created." " To view the status of the report, see Pending Tasks below.") return JsonResponse({"status": success_status}) @@ -1290,7 +1294,7 @@ def get_students_who_may_enroll(request, course_id): course_key = CourseKey.from_string(course_id) query_features = ['email'] try: - instructor_task.api.submit_calculate_may_enroll_csv(request, course_key, query_features) + lms.djangoapps.instructor_task.api.submit_calculate_may_enroll_csv(request, course_key, query_features) success_status = _( "The enrollment report is being created. This report contains" " information about learners who can enroll in the course." @@ -1345,7 +1349,7 @@ def add_users_to_cohorts(request, course_id): validator=validator ) # The task will assume the default file storage. - instructor_task.api.submit_cohort_students(request, course_key, filename) + lms.djangoapps.instructor_task.api.submit_cohort_students(request, course_key, filename) except (FileValidationException, PermissionDenied) as err: return JsonResponse({"error": unicode(err)}, status=400) @@ -1393,7 +1397,7 @@ def get_enrollment_report(request, course_id): """ course_key = SlashSeparatedCourseKey.from_deprecated_string(course_id) try: - instructor_task.api.submit_detailed_enrollment_features_csv(request, course_key) + lms.djangoapps.instructor_task.api.submit_detailed_enrollment_features_csv(request, course_key) success_status = _("The detailed enrollment report is being created." " To view the status of the report, see Pending Tasks below.") return JsonResponse({"status": success_status}) @@ -1418,7 +1422,7 @@ def get_exec_summary_report(request, course_id): """ course_key = SlashSeparatedCourseKey.from_deprecated_string(course_id) try: - instructor_task.api.submit_executive_summary_report(request, course_key) + lms.djangoapps.instructor_task.api.submit_executive_summary_report(request, course_key) status_response = _("The executive summary report is being created." " To view the status of the report, see Pending Tasks below.") except AlreadyRunningError: @@ -1443,7 +1447,7 @@ def get_course_survey_results(request, course_id): """ course_key = SlashSeparatedCourseKey.from_deprecated_string(course_id) try: - instructor_task.api.submit_course_survey_report(request, course_key) + lms.djangoapps.instructor_task.api.submit_course_survey_report(request, course_key) status_response = _("The survey report is being created." " To view the status of the report, see Pending Tasks below.") except AlreadyRunningError: @@ -1479,7 +1483,7 @@ def get_proctored_exam_results(request, course_id): course_key = CourseKey.from_string(course_id) try: - instructor_task.api.submit_proctored_exam_results_report(request, course_key, query_features) + lms.djangoapps.instructor_task.api.submit_proctored_exam_results_report(request, course_key, query_features) status_response = _("The proctored exam results report is being created." " To view the status of the report, see Pending Tasks below.") except AlreadyRunningError: @@ -1978,7 +1982,7 @@ def reset_student_attempts(request, course_id): return HttpResponse(error_msg, status=500) response_payload['student'] = student_identifier elif all_students: - instructor_task.api.submit_reset_problem_attempts_for_all_students(request, module_state_key) + lms.djangoapps.instructor_task.api.submit_reset_problem_attempts_for_all_students(request, module_state_key) response_payload['task'] = 'created' response_payload['student'] = 'All Students' else: @@ -2044,9 +2048,17 @@ def reset_student_attempts_for_entrance_exam(request, course_id): # pylint: dis try: entrance_exam_key = course_id.make_usage_key_from_deprecated_string(course.entrance_exam_id) if delete_module: - instructor_task.api.submit_delete_entrance_exam_state_for_student(request, entrance_exam_key, student) + lms.djangoapps.instructor_task.api.submit_delete_entrance_exam_state_for_student( + request, + entrance_exam_key, + student + ) else: - instructor_task.api.submit_reset_problem_attempts_in_entrance_exam(request, entrance_exam_key, student) + lms.djangoapps.instructor_task.api.submit_reset_problem_attempts_in_entrance_exam( + request, + entrance_exam_key, + student + ) except InvalidKeyError: return HttpResponseBadRequest(_("Course has no valid entrance exam section.")) @@ -2100,10 +2112,10 @@ def rescore_problem(request, course_id): if student: response_payload['student'] = student_identifier - instructor_task.api.submit_rescore_problem_for_student(request, module_state_key, student) + lms.djangoapps.instructor_task.api.submit_rescore_problem_for_student(request, module_state_key, student) response_payload['task'] = 'created' elif all_students: - instructor_task.api.submit_rescore_problem_for_all_students(request, module_state_key) + lms.djangoapps.instructor_task.api.submit_rescore_problem_for_all_students(request, module_state_key) response_payload['task'] = 'created' else: return HttpResponseBadRequest() @@ -2160,7 +2172,7 @@ def rescore_entrance_exam(request, course_id): response_payload['student'] = student_identifier else: response_payload['student'] = _("All Students") - instructor_task.api.submit_rescore_entrance_exam_for_student(request, entrance_exam_key, student) + lms.djangoapps.instructor_task.api.submit_rescore_entrance_exam_for_student(request, entrance_exam_key, student) response_payload['task'] = 'created' return JsonResponse(response_payload) @@ -2176,7 +2188,10 @@ def list_background_email_tasks(request, course_id): # pylint: disable=unused-a course_id = SlashSeparatedCourseKey.from_deprecated_string(course_id) task_type = 'bulk_course_email' # Specifying for the history of a single task type - tasks = instructor_task.api.get_instructor_task_history(course_id, task_type=task_type) + tasks = lms.djangoapps.instructor_task.api.get_instructor_task_history( + course_id, + task_type=task_type + ) response_payload = { 'tasks': map(extract_task_features, tasks), @@ -2195,7 +2210,7 @@ def list_email_content(request, course_id): # pylint: disable=unused-argument course_id = SlashSeparatedCourseKey.from_deprecated_string(course_id) task_type = 'bulk_course_email' # First get tasks list of bulk emails sent - emails = instructor_task.api.get_instructor_task_history(course_id, task_type=task_type) + emails = lms.djangoapps.instructor_task.api.get_instructor_task_history(course_id, task_type=task_type) response_payload = { 'emails': map(extract_email_features, emails), @@ -2235,13 +2250,13 @@ def list_instructor_tasks(request, course_id): return HttpResponseBadRequest() if student: # Specifying for a single student's history on this problem - tasks = instructor_task.api.get_instructor_task_history(course_id, module_state_key, student) + tasks = lms.djangoapps.instructor_task.api.get_instructor_task_history(course_id, module_state_key, student) else: # Specifying for single problem's history - tasks = instructor_task.api.get_instructor_task_history(course_id, module_state_key) + tasks = lms.djangoapps.instructor_task.api.get_instructor_task_history(course_id, module_state_key) else: # If no problem or student, just get currently running tasks - tasks = instructor_task.api.get_running_instructor_tasks(course_id) + tasks = lms.djangoapps.instructor_task.api.get_running_instructor_tasks(course_id) response_payload = { 'tasks': map(extract_task_features, tasks), @@ -2273,10 +2288,17 @@ def list_entrance_exam_instructor_tasks(request, course_id): # pylint: disable= return HttpResponseBadRequest(_("Course has no valid entrance exam section.")) if student: # Specifying for a single student's entrance exam history - tasks = instructor_task.api.get_entrance_exam_instructor_task_history(course_id, entrance_exam_key, student) + tasks = lms.djangoapps.instructor_task.api.get_entrance_exam_instructor_task_history( + course_id, + entrance_exam_key, + student + ) else: # Specifying for all student's entrance exam history - tasks = instructor_task.api.get_entrance_exam_instructor_task_history(course_id, entrance_exam_key) + tasks = lms.djangoapps.instructor_task.api.get_entrance_exam_instructor_task_history( + course_id, + entrance_exam_key + ) response_payload = { 'tasks': map(extract_task_features, tasks), @@ -2336,7 +2358,7 @@ def export_ora2_data(request, course_id): """ course_key = SlashSeparatedCourseKey.from_deprecated_string(course_id) try: - instructor_task.api.submit_export_ora2_data(request, course_key) + lms.djangoapps.instructor_task.api.submit_export_ora2_data(request, course_key) success_status = _("The ORA data report is being generated.") return JsonResponse({"status": success_status}) @@ -2362,7 +2384,7 @@ def calculate_grades_csv(request, course_id): """ course_key = SlashSeparatedCourseKey.from_deprecated_string(course_id) try: - instructor_task.api.submit_calculate_grades_csv(request, course_key) + lms.djangoapps.instructor_task.api.submit_calculate_grades_csv(request, course_key) success_status = _("The grade report is being created." " To view the status of the report, see Pending Tasks below.") return JsonResponse({"status": success_status}) @@ -2388,7 +2410,7 @@ def problem_grade_report(request, course_id): """ course_key = SlashSeparatedCourseKey.from_deprecated_string(course_id) try: - instructor_task.api.submit_problem_grade_report(request, course_key) + lms.djangoapps.instructor_task.api.submit_problem_grade_report(request, course_key) success_status = _("The problem grade report is being created." " To view the status of the report, see Pending Tasks below.") return JsonResponse({"status": success_status}) @@ -2513,7 +2535,7 @@ def send_email(request, course_id): return HttpResponseBadRequest(repr(err)) # Submit the task, so that the correct InstructorTask object gets created (for monitoring purposes) - instructor_task.api.submit_bulk_course_email(request, course_id, email.id) + lms.djangoapps.instructor_task.api.submit_bulk_course_email(request, course_id, email.id) response_payload = { 'course_id': course_id.to_deprecated_string(), @@ -2799,7 +2821,7 @@ def start_certificate_generation(request, course_id): Start generating certificates for all students enrolled in given course. """ course_key = CourseKey.from_string(course_id) - task = instructor_task.api.generate_certificates_for_students(request, course_key) + task = lms.djangoapps.instructor_task.api.generate_certificates_for_students(request, course_key) message = _('Certificate generation task for all students of this course has been started. ' 'You can view the status of the generation task in the "Pending Tasks" section.') response_payload = { @@ -2835,7 +2857,7 @@ def start_certificate_regeneration(request, course_id): status=400 ) try: - instructor_task.api.regenerate_certificates(request, course_key, certificates_statuses) + lms.djangoapps.instructor_task.api.regenerate_certificates(request, course_key, certificates_statuses) except AlreadyRunningError as error: return JsonResponse({'message': error.message}, status=400) @@ -3054,7 +3076,7 @@ def generate_certificate_exceptions(request, course_id, generate_for=None): status=400 ) - instructor_task.api.generate_certificates_for_students(request, course_key, student_set=students) + lms.djangoapps.instructor_task.api.generate_certificates_for_students(request, course_key, student_set=students) response_payload = { 'success': True, @@ -3263,7 +3285,7 @@ def re_validate_certificate(request, course_key, generated_certificate): # We need to generate certificate only for a single student here student = certificate_invalidation.generated_certificate.user - instructor_task.api.generate_certificates_for_students( + lms.djangoapps.instructor_task.api.generate_certificates_for_students( request, course_key, student_set="specific_student", specific_student_id=student.id ) diff --git a/lms/djangoapps/instructor/views/instructor_task_helpers.py b/lms/djangoapps/instructor/views/instructor_task_helpers.py index c1232e8855..15b53c7e5c 100644 --- a/lms/djangoapps/instructor/views/instructor_task_helpers.py +++ b/lms/djangoapps/instructor/views/instructor_task_helpers.py @@ -8,7 +8,7 @@ from util.date_utils import get_default_time_display from bulk_email.models import CourseEmail from django.utils.translation import ugettext as _ from django.utils.translation import ungettext -from instructor_task.views import get_task_completion_info +from lms.djangoapps.instructor_task.views import get_task_completion_info log = logging.getLogger(__name__) diff --git a/lms/djangoapps/instructor_task/api.py b/lms/djangoapps/instructor_task/api.py index 6301b49bf0..3a2cd1c73c 100644 --- a/lms/djangoapps/instructor_task/api.py +++ b/lms/djangoapps/instructor_task/api.py @@ -13,8 +13,8 @@ from celery.states import READY_STATES from xmodule.modulestore.django import modulestore -from instructor_task.models import InstructorTask -from instructor_task.tasks import ( +from lms.djangoapps.instructor_task.models import InstructorTask +from lms.djangoapps.instructor_task.tasks import ( rescore_problem, reset_problem_attempts, delete_problem_state, @@ -35,7 +35,7 @@ from instructor_task.tasks import ( from certificates.models import CertificateGenerationHistory -from instructor_task.api_helper import ( +from lms.djangoapps.instructor_task.api_helper import ( check_arguments_for_rescoring, encode_problem_and_student_input, encode_entrance_exam_and_student_input, diff --git a/lms/djangoapps/instructor_task/api_helper.py b/lms/djangoapps/instructor_task/api_helper.py index 32a2db2586..307c1c195b 100644 --- a/lms/djangoapps/instructor_task/api_helper.py +++ b/lms/djangoapps/instructor_task/api_helper.py @@ -19,7 +19,7 @@ from courseware.courses import get_problems_in_section from xmodule.modulestore.django import modulestore from opaque_keys.edx.keys import UsageKey -from instructor_task.models import InstructorTask, PROGRESS +from lms.djangoapps.instructor_task.models import InstructorTask, PROGRESS log = logging.getLogger(__name__) diff --git a/lms/djangoapps/instructor_task/subtasks.py b/lms/djangoapps/instructor_task/subtasks.py index 3fb89f3621..d9b41c6fbe 100644 --- a/lms/djangoapps/instructor_task/subtasks.py +++ b/lms/djangoapps/instructor_task/subtasks.py @@ -14,7 +14,7 @@ import dogstats_wrapper as dog_stats_api from django.db import transaction, DatabaseError from django.core.cache import cache -from instructor_task.models import InstructorTask, PROGRESS, QUEUING +from lms.djangoapps.instructor_task.models import InstructorTask, PROGRESS, QUEUING from util.db import outer_atomic TASK_LOG = logging.getLogger('edx.celery.task') diff --git a/lms/djangoapps/instructor_task/tasks.py b/lms/djangoapps/instructor_task/tasks.py index 237d98c820..5a24516701 100644 --- a/lms/djangoapps/instructor_task/tasks.py +++ b/lms/djangoapps/instructor_task/tasks.py @@ -27,7 +27,7 @@ from django.utils.translation import ugettext_noop from celery import task from bulk_email.tasks import perform_delegate_email_batches -from instructor_task.tasks_helper import ( +from lms.djangoapps.instructor_task.tasks_helper import ( run_main_task, BaseInstructorTask, perform_module_state_update, diff --git a/lms/djangoapps/instructor_task/tasks_helper.py b/lms/djangoapps/instructor_task/tasks_helper.py index 140533040d..fa0de7a7f8 100644 --- a/lms/djangoapps/instructor_task/tasks_helper.py +++ b/lms/djangoapps/instructor_task/tasks_helper.py @@ -58,7 +58,7 @@ from instructor_analytics.basic import ( ) from instructor_analytics.csvs import format_dictlist from openassessment.data import OraAggregateData -from instructor_task.models import ReportStore, InstructorTask, PROGRESS +from lms.djangoapps.instructor_task.models import ReportStore, InstructorTask, PROGRESS from lms.djangoapps.lms_xblock.runtime import LmsPartitionService from openedx.core.djangoapps.course_groups.cohorts import get_cohort from openedx.core.djangoapps.course_groups.models import CourseUserGroup diff --git a/lms/djangoapps/instructor_task/tests/factories.py b/lms/djangoapps/instructor_task/tests/factories.py index fe376d9c67..e08b6ea25d 100644 --- a/lms/djangoapps/instructor_task/tests/factories.py +++ b/lms/djangoapps/instructor_task/tests/factories.py @@ -3,7 +3,7 @@ import json import factory from factory.django import DjangoModelFactory from student.tests.factories import UserFactory as StudentUserFactory -from instructor_task.models import InstructorTask +from lms.djangoapps.instructor_task.models import InstructorTask from celery.states import PENDING from opaque_keys.edx.locations import SlashSeparatedCourseKey diff --git a/lms/djangoapps/instructor_task/tests/test_api.py b/lms/djangoapps/instructor_task/tests/test_api.py index 73cb33ddde..7b8547587a 100644 --- a/lms/djangoapps/instructor_task/tests/test_api.py +++ b/lms/djangoapps/instructor_task/tests/test_api.py @@ -7,7 +7,7 @@ from bulk_email.models import CourseEmail, SEND_TO_MYSELF, SEND_TO_STAFF, SEND_T from courseware.tests.factories import UserFactory from xmodule.modulestore.exceptions import ItemNotFoundError -from instructor_task.api import ( +from lms.djangoapps.instructor_task.api import ( get_running_instructor_tasks, get_instructor_task_history, submit_rescore_problem_for_all_students, @@ -28,10 +28,10 @@ from instructor_task.api import ( SpecificStudentIdMissingError, ) -from instructor_task.api_helper import AlreadyRunningError -from instructor_task.models import InstructorTask, PROGRESS -from instructor_task.tasks import export_ora2_data -from instructor_task.tests.test_base import ( +from lms.djangoapps.instructor_task.api_helper import AlreadyRunningError +from lms.djangoapps.instructor_task.models import InstructorTask, PROGRESS +from lms.djangoapps.instructor_task.tasks import export_ora2_data +from lms.djangoapps.instructor_task.tests.test_base import ( InstructorTaskTestCase, InstructorTaskCourseTestCase, InstructorTaskModuleTestCase, @@ -273,7 +273,7 @@ class InstructorTaskCourseSubmitTest(TestReportMixin, InstructorTaskCourseTestCa def test_submit_ora2_request_task(self): request = self.create_task_request(self.instructor) - with patch('instructor_task.api.submit_task') as mock_submit_task: + with patch('lms.djangoapps.instructor_task.api.submit_task') as mock_submit_task: mock_submit_task.return_value = MagicMock() submit_export_ora2_data(request, self.course.id) diff --git a/lms/djangoapps/instructor_task/tests/test_base.py b/lms/djangoapps/instructor_task/tests/test_base.py index 408b2aa80f..716f9be8c5 100644 --- a/lms/djangoapps/instructor_task/tests/test_base.py +++ b/lms/djangoapps/instructor_task/tests/test_base.py @@ -26,10 +26,10 @@ from xmodule.modulestore.django import modulestore from xmodule.modulestore.tests.factories import CourseFactory, ItemFactory from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase -from instructor_task.api_helper import encode_problem_and_student_input -from instructor_task.models import PROGRESS, QUEUING, ReportStore -from instructor_task.tests.factories import InstructorTaskFactory -from instructor_task.views import instructor_task_status +from lms.djangoapps.instructor_task.api_helper import encode_problem_and_student_input +from lms.djangoapps.instructor_task.models import PROGRESS, QUEUING, ReportStore +from lms.djangoapps.instructor_task.tests.factories import InstructorTaskFactory +from lms.djangoapps.instructor_task.views import instructor_task_status TEST_COURSE_ORG = 'edx' diff --git a/lms/djangoapps/instructor_task/tests/test_integration.py b/lms/djangoapps/instructor_task/tests/test_integration.py index 2626f4f0bd..a64ac4b907 100644 --- a/lms/djangoapps/instructor_task/tests/test_integration.py +++ b/lms/djangoapps/instructor_task/tests/test_integration.py @@ -25,13 +25,15 @@ from xmodule.modulestore import ModuleStoreEnum from courseware.model_data import StudentModule -from instructor_task.api import (submit_rescore_problem_for_all_students, - submit_rescore_problem_for_student, - submit_reset_problem_attempts_for_all_students, - submit_delete_problem_state_for_all_students) -from instructor_task.models import InstructorTask -from instructor_task.tasks_helper import upload_grades_csv -from instructor_task.tests.test_base import ( +from lms.djangoapps.instructor_task.api import ( + submit_rescore_problem_for_all_students, + submit_rescore_problem_for_student, + submit_reset_problem_attempts_for_all_students, + submit_delete_problem_state_for_all_students +) +from lms.djangoapps.instructor_task.models import InstructorTask +from lms.djangoapps.instructor_task.tasks_helper import upload_grades_csv +from lms.djangoapps.instructor_task.tests.test_base import ( InstructorTaskModuleTestCase, TestReportMixin, OPTION_1, @@ -571,7 +573,7 @@ class TestGradeReportConditionalContent(TestReportMixin, TestConditionalContent, self.submit_student_answer(self.student_a.username, problem_a_url, [OPTION_1, OPTION_1]) self.submit_student_answer(self.student_b.username, problem_b_url, [OPTION_1, OPTION_2]) - with patch('instructor_task.tasks_helper._get_current_task'): + with patch('lms.djangoapps.instructor_task.tasks_helper._get_current_task'): result = upload_grades_csv(None, None, self.course.id, None, 'graded') self.verify_csv_task_success(result) self.verify_grades_in_csv( @@ -594,7 +596,7 @@ class TestGradeReportConditionalContent(TestReportMixin, TestConditionalContent, self.submit_student_answer(self.student_a.username, problem_a_url, [OPTION_1, OPTION_1]) - with patch('instructor_task.tasks_helper._get_current_task'): + with patch('lms.djangoapps.instructor_task.tasks_helper._get_current_task'): result = upload_grades_csv(None, None, self.course.id, None, 'graded') self.verify_csv_task_success(result) self.verify_grades_in_csv( diff --git a/lms/djangoapps/instructor_task/tests/test_models.py b/lms/djangoapps/instructor_task/tests/test_models.py index 2109fb002b..5e0a0544ba 100644 --- a/lms/djangoapps/instructor_task/tests/test_models.py +++ b/lms/djangoapps/instructor_task/tests/test_models.py @@ -11,8 +11,8 @@ from django.test import SimpleTestCase, override_settings, TestCase from mock import patch from common.test.utils import MockS3Mixin -from instructor_task.models import ReportStore -from instructor_task.tests.test_base import TestReportMixin +from lms.djangoapps.instructor_task.models import ReportStore +from lms.djangoapps.instructor_task.tests.test_base import TestReportMixin from opaque_keys.edx.locator import CourseLocator diff --git a/lms/djangoapps/instructor_task/tests/test_subtasks.py b/lms/djangoapps/instructor_task/tests/test_subtasks.py index 8d23d26115..0c9d496268 100644 --- a/lms/djangoapps/instructor_task/tests/test_subtasks.py +++ b/lms/djangoapps/instructor_task/tests/test_subtasks.py @@ -7,9 +7,9 @@ from mock import Mock, patch from student.models import CourseEnrollment -from instructor_task.subtasks import queue_subtasks_for_query -from instructor_task.tests.factories import InstructorTaskFactory -from instructor_task.tests.test_base import InstructorTaskCourseTestCase +from lms.djangoapps.instructor_task.subtasks import queue_subtasks_for_query +from lms.djangoapps.instructor_task.tests.factories import InstructorTaskFactory +from lms.djangoapps.instructor_task.tests.test_base import InstructorTaskCourseTestCase class TestSubtasks(InstructorTaskCourseTestCase): @@ -45,7 +45,7 @@ class TestSubtasks(InstructorTaskCourseTestCase): self._enroll_students_in_course(self.course.id, extra_count) return {} - with patch('instructor_task.subtasks.initialize_subtask_info') as mock_initialize_subtask_info: + with patch('lms.djangoapps.instructor_task.subtasks.initialize_subtask_info') as mock_initialize_subtask_info: mock_initialize_subtask_info.side_effect = initialize_subtask_info queue_subtasks_for_query( entry=instructor_task, diff --git a/lms/djangoapps/instructor_task/tests/test_tasks.py b/lms/djangoapps/instructor_task/tests/test_tasks.py index 2a75d5cf92..fd24cf8921 100644 --- a/lms/djangoapps/instructor_task/tests/test_tasks.py +++ b/lms/djangoapps/instructor_task/tests/test_tasks.py @@ -22,17 +22,17 @@ from courseware.models import StudentModule from courseware.tests.factories import StudentModuleFactory from student.tests.factories import UserFactory, CourseEnrollmentFactory -from instructor_task.models import InstructorTask -from instructor_task.tests.test_base import InstructorTaskModuleTestCase -from instructor_task.tests.factories import InstructorTaskFactory -from instructor_task.tasks import ( +from lms.djangoapps.instructor_task.models import InstructorTask +from lms.djangoapps.instructor_task.tests.test_base import InstructorTaskModuleTestCase +from lms.djangoapps.instructor_task.tests.factories import InstructorTaskFactory +from lms.djangoapps.instructor_task.tasks import ( rescore_problem, reset_problem_attempts, delete_problem_state, generate_certificates, export_ora2_data, ) -from instructor_task.tasks_helper import ( +from lms.djangoapps.instructor_task.tasks_helper import ( UpdateProblemModuleStateError, upload_ora2_data, ) @@ -87,7 +87,7 @@ class TestInstructorTasks(InstructorTaskModuleTestCase): self.current_task.update_state.side_effect = TestTaskFailure(expected_failure_message) task_args = [entry_id, self._get_xmodule_instance_args()] - with patch('instructor_task.tasks_helper._get_current_task') as mock_get_task: + with patch('lms.djangoapps.instructor_task.tasks_helper._get_current_task') as mock_get_task: mock_get_task.return_value = self.current_task return task_class.apply(task_args, task_id=task_id).get() @@ -246,7 +246,7 @@ class TestRescoreInstructorTask(TestInstructorTasks): task_entry = self._create_input_entry() mock_instance = MagicMock() del mock_instance.rescore_problem - with patch('instructor_task.tasks_helper.get_module_for_descriptor_internal') as mock_get_module: + with patch('lms.djangoapps.instructor_task.tasks_helper.get_module_for_descriptor_internal') as mock_get_module: mock_get_module.return_value = mock_instance with self.assertRaises(UpdateProblemModuleStateError): self._run_task_with_mock_celery(rescore_problem, task_entry.id, task_entry.task_id) @@ -264,7 +264,7 @@ class TestRescoreInstructorTask(TestInstructorTasks): task_entry = self._create_input_entry() mock_instance = Mock() mock_instance.rescore_problem = Mock(return_value={'success': 'correct'}) - with patch('instructor_task.tasks_helper.get_module_for_descriptor_internal') as mock_get_module: + with patch('lms.djangoapps.instructor_task.tasks_helper.get_module_for_descriptor_internal') as mock_get_module: mock_get_module.return_value = mock_instance self._run_task_with_mock_celery(rescore_problem, task_entry.id, task_entry.task_id) # check return value @@ -284,7 +284,7 @@ class TestRescoreInstructorTask(TestInstructorTasks): task_entry = self._create_input_entry() mock_instance = Mock() mock_instance.rescore_problem = Mock(return_value={'success': 'bogus'}) - with patch('instructor_task.tasks_helper.get_module_for_descriptor_internal') as mock_get_module: + with patch('lms.djangoapps.instructor_task.tasks_helper.get_module_for_descriptor_internal') as mock_get_module: mock_get_module.return_value = mock_instance self._run_task_with_mock_celery(rescore_problem, task_entry.id, task_entry.task_id) # check return value @@ -304,7 +304,7 @@ class TestRescoreInstructorTask(TestInstructorTasks): task_entry = self._create_input_entry() mock_instance = Mock() mock_instance.rescore_problem = Mock(return_value={'bogus': 'value'}) - with patch('instructor_task.tasks_helper.get_module_for_descriptor_internal') as mock_get_module: + with patch('lms.djangoapps.instructor_task.tasks_helper.get_module_for_descriptor_internal') as mock_get_module: mock_get_module.return_value = mock_instance self._run_task_with_mock_celery(rescore_problem, task_entry.id, task_entry.task_id) # check return value @@ -502,7 +502,7 @@ class TestOra2ResponsesInstructorTask(TestInstructorTasks): task_entry = self._create_input_entry() task_xmodule_args = self._get_xmodule_instance_args() - with patch('instructor_task.tasks.run_main_task') as mock_main_task: + with patch('lms.djangoapps.instructor_task.tasks.run_main_task') as mock_main_task: export_ora2_data(task_entry.id, task_xmodule_args) action_name = ugettext_noop('generated') diff --git a/lms/djangoapps/instructor_task/tests/test_tasks_helper.py b/lms/djangoapps/instructor_task/tests/test_tasks_helper.py index 94be388f4b..12b3d4681d 100644 --- a/lms/djangoapps/instructor_task/tests/test_tasks_helper.py +++ b/lms/djangoapps/instructor_task/tests/test_tasks_helper.py @@ -27,7 +27,11 @@ from certificates.models import CertificateStatuses, GeneratedCertificate from certificates.tests.factories import GeneratedCertificateFactory, CertificateWhitelistFactory from course_modes.models import CourseMode from courseware.tests.factories import InstructorFactory -from instructor_task.tests.test_base import InstructorTaskCourseTestCase, TestReportMixin, InstructorTaskModuleTestCase +from lms.djangoapps.instructor_task.tests.test_base import ( + InstructorTaskCourseTestCase, + TestReportMixin, + InstructorTaskModuleTestCase +) from openedx.core.djangoapps.course_groups.models import CourseUserGroupPartitionGroup, CohortMembership from django.conf import settings from xmodule.modulestore.tests.django_utils import SharedModuleStoreTestCase @@ -44,9 +48,9 @@ from student.models import CourseEnrollment, CourseEnrollmentAllowed, ManualEnro from lms.djangoapps.verify_student.tests.factories import SoftwareSecurePhotoVerificationFactory from xmodule.modulestore.tests.factories import CourseFactory, ItemFactory from xmodule.partitions.partitions import Group, UserPartition -from instructor_task.models import ReportStore +from lms.djangoapps.instructor_task.models import ReportStore from survey.models import SurveyForm, SurveyAnswer -from instructor_task.tasks_helper import ( +from lms.djangoapps.instructor_task.tasks_helper import ( cohort_students_and_upload, upload_problem_responses_csv, upload_grades_csv, @@ -73,7 +77,7 @@ class InstructorGradeReportTestCase(TestReportMixin, InstructorTaskCourseTestCas """ Verify cell data in the grades CSV for a particular user. """ - with patch('instructor_task.tasks_helper._get_current_task'): + with patch('lms.djangoapps.instructor_task.tasks_helper._get_current_task'): result = upload_grades_csv(None, None, course_id, None, 'graded') self.assertDictContainsSubset({'attempted': 2, 'succeeded': 2, 'failed': 0}, result) report_store = ReportStore.from_config(config_name='GRADES_DOWNLOAD') @@ -104,14 +108,14 @@ class TestInstructorGradeReport(InstructorGradeReportTestCase): self.current_task = Mock() self.current_task.update_state = Mock() - with patch('instructor_task.tasks_helper._get_current_task') as mock_current_task: + with patch('lms.djangoapps.instructor_task.tasks_helper._get_current_task') as mock_current_task: mock_current_task.return_value = self.current_task result = upload_grades_csv(None, None, self.course.id, None, 'graded') num_students = len(emails) self.assertDictContainsSubset({'attempted': num_students, 'succeeded': num_students, 'failed': 0}, result) - @patch('instructor_task.tasks_helper._get_current_task') - @patch('instructor_task.tasks_helper.iterate_grades_for') + @patch('lms.djangoapps.instructor_task.tasks_helper._get_current_task') + @patch('lms.djangoapps.instructor_task.tasks_helper.iterate_grades_for') def test_grading_failure(self, mock_iterate_grades_for, _mock_current_task): """ Test that any grading errors are properly reported in the @@ -288,8 +292,8 @@ class TestInstructorGradeReport(InstructorGradeReportTestCase): u'Default Group', ) - @patch('instructor_task.tasks_helper._get_current_task') - @patch('instructor_task.tasks_helper.iterate_grades_for') + @patch('lms.djangoapps.instructor_task.tasks_helper._get_current_task') + @patch('lms.djangoapps.instructor_task.tasks_helper.iterate_grades_for') def test_unicode_in_csv_header(self, mock_iterate_grades_for, _mock_current_task): """ Tests that CSV grade report works if unicode in headers. @@ -354,8 +358,8 @@ class TestProblemResponsesReport(TestReportMixin, InstructorTaskCourseTestCase): def test_success(self): task_input = {'problem_location': ''} - with patch('instructor_task.tasks_helper._get_current_task'): - with patch('instructor_task.tasks_helper.list_problem_responses') as patched_data_source: + with patch('lms.djangoapps.instructor_task.tasks_helper._get_current_task'): + with patch('lms.djangoapps.instructor_task.tasks_helper.list_problem_responses') as patched_data_source: patched_data_source.return_value = [ {'username': 'user0', 'state': u'state0'}, {'username': 'user1', 'state': u'state1'}, @@ -402,7 +406,7 @@ class TestInstructorDetailedEnrollmentReport(TestReportMixin, InstructorTaskCour def test_success(self): self.create_student('student', 'student@example.com') task_input = {'features': []} - with patch('instructor_task.tasks_helper._get_current_task'): + with patch('lms.djangoapps.instructor_task.tasks_helper._get_current_task'): result = upload_enrollment_report(None, None, self.course.id, task_input, 'generating_enrollment_report') self.assertDictContainsSubset({'attempted': 1, 'succeeded': 1, 'failed': 0}, result) @@ -418,7 +422,7 @@ class TestInstructorDetailedEnrollmentReport(TestReportMixin, InstructorTaskCour student_cart.purchase() task_input = {'features': []} - with patch('instructor_task.tasks_helper._get_current_task'): + with patch('lms.djangoapps.instructor_task.tasks_helper._get_current_task'): result = upload_enrollment_report(None, None, self.course.id, task_input, 'generating_enrollment_report') self.assertDictContainsSubset({'attempted': 1, 'succeeded': 1, 'failed': 0}, result) self._verify_cell_data_in_csv(student.username, 'Enrollment Source', 'Credit Card - Individual') @@ -437,7 +441,7 @@ class TestInstructorDetailedEnrollmentReport(TestReportMixin, InstructorTaskCour ) task_input = {'features': []} - with patch('instructor_task.tasks_helper._get_current_task'): + with patch('lms.djangoapps.instructor_task.tasks_helper._get_current_task'): result = upload_enrollment_report(None, None, self.course.id, task_input, 'generating_enrollment_report') enrollment_source = u'manually enrolled by username: {username}'.format( @@ -477,7 +481,7 @@ class TestInstructorDetailedEnrollmentReport(TestReportMixin, InstructorTaskCour self.assertEquals(response.status_code, 200) task_input = {'features': []} - with patch('instructor_task.tasks_helper._get_current_task'): + with patch('lms.djangoapps.instructor_task.tasks_helper._get_current_task'): result = upload_enrollment_report(None, None, self.course.id, task_input, 'generating_enrollment_report') self.assertDictContainsSubset({'attempted': 1, 'succeeded': 1, 'failed': 0}, result) self._verify_cell_data_in_csv(student.username, 'Enrollment Source', 'Used Registration Code') @@ -511,7 +515,7 @@ class TestInstructorDetailedEnrollmentReport(TestReportMixin, InstructorTaskCour self.assertEquals(response.status_code, 200) task_input = {'features': []} - with patch('instructor_task.tasks_helper._get_current_task'): + with patch('lms.djangoapps.instructor_task.tasks_helper._get_current_task'): result = upload_enrollment_report(None, None, self.course.id, task_input, 'generating_enrollment_report') self.assertDictContainsSubset({'attempted': 1, 'succeeded': 1, 'failed': 0}, result) self._verify_cell_data_in_csv(student.username, 'Enrollment Source', 'Used Registration Code') @@ -552,7 +556,7 @@ class TestInstructorDetailedEnrollmentReport(TestReportMixin, InstructorTaskCour self.assertEquals(response.status_code, 200) task_input = {'features': []} - with patch('instructor_task.tasks_helper._get_current_task'): + with patch('lms.djangoapps.instructor_task.tasks_helper._get_current_task'): result = upload_enrollment_report(None, None, self.course.id, task_input, 'generating_enrollment_report') self.assertDictContainsSubset({'attempted': 1, 'succeeded': 1, 'failed': 0}, result) self._verify_cell_data_in_csv(student.username, 'Enrollment Source', 'Used Registration Code') @@ -586,7 +590,7 @@ class TestProblemGradeReport(TestReportMixin, InstructorTaskModuleTestCase): self.student_2 = self.create_student(u'üser_2') self.csv_header_row = [u'Student ID', u'Email', u'Username', u'Final Grade'] - @patch('instructor_task.tasks_helper._get_current_task') + @patch('lms.djangoapps.instructor_task.tasks_helper._get_current_task') def test_no_problems(self, _get_current_task): """ Verify that we see no grade information for a course with no graded @@ -605,7 +609,7 @@ class TestProblemGradeReport(TestReportMixin, InstructorTaskModuleTestCase): )) ]) - @patch('instructor_task.tasks_helper._get_current_task') + @patch('lms.djangoapps.instructor_task.tasks_helper._get_current_task') def test_single_problem(self, _get_current_task): vertical = ItemFactory.create( parent_location=self.problem_section.location, @@ -640,8 +644,8 @@ class TestProblemGradeReport(TestReportMixin, InstructorTaskModuleTestCase): )) ]) - @patch('instructor_task.tasks_helper._get_current_task') - @patch('instructor_task.tasks_helper.iterate_grades_for') + @patch('lms.djangoapps.instructor_task.tasks_helper._get_current_task') + @patch('lms.djangoapps.instructor_task.tasks_helper.iterate_grades_for') @ddt.data(u'Cannöt grade student', '') def test_grading_failure(self, error_message, mock_iterate_grades_for, _mock_current_task): """ @@ -701,7 +705,7 @@ class TestProblemReportSplitTestContent(TestReportMixin, TestConditionalContent, self.submit_student_answer(self.student_b.username, self.problem_a_url, [self.OPTION_1, self.OPTION_2]) self.submit_student_answer(self.student_b.username, self.problem_b_url, [self.OPTION_1, self.OPTION_2]) - with patch('instructor_task.tasks_helper._get_current_task'): + with patch('lms.djangoapps.instructor_task.tasks_helper._get_current_task'): result = upload_problem_grade_report(None, None, self.course.id, None, 'graded') self.assertDictContainsSubset( {'action_name': 'graded', 'attempted': 2, 'succeeded': 2, 'failed': 0}, result @@ -793,7 +797,7 @@ class TestProblemReportSplitTestContent(TestReportMixin, TestConditionalContent, for problem in problem_names: header_row += [problem + ' (Earned)', problem + ' (Possible)'] - with patch('instructor_task.tasks_helper._get_current_task'): + with patch('lms.djangoapps.instructor_task.tasks_helper._get_current_task'): upload_problem_grade_report(None, None, self.course.id, None, 'graded') self.assertEquals(self.get_csv_row_with_headers(), header_row) @@ -849,7 +853,7 @@ class TestProblemReportCohortedContent(TestReportMixin, ContentGroupTestCase, In self.assertEqual(resp.status_code, 404) self.submit_student_answer(self.beta_user.username, u'Pröblem1', ['Option 1', 'Option 2']) - with patch('instructor_task.tasks_helper._get_current_task'): + with patch('lms.djangoapps.instructor_task.tasks_helper._get_current_task'): result = upload_problem_grade_report(None, None, self.course.id, None, 'graded') self.assertDictContainsSubset( {'action_name': 'graded', 'attempted': 4, 'succeeded': 4, 'failed': 0}, result @@ -922,7 +926,7 @@ class TestExecutiveSummaryReport(TestReportMixin, InstructorTaskCourseTestCase): Test that successfully generates the executive summary report. """ task_input = {'features': []} - with patch('instructor_task.tasks_helper._get_current_task'): + with patch('lms.djangoapps.instructor_task.tasks_helper._get_current_task'): result = upload_exec_summary_report( None, None, self.course.id, task_input, 'generating executive summary report' @@ -975,7 +979,7 @@ class TestExecutiveSummaryReport(TestReportMixin, InstructorTaskCourseTestCase): """ self.students_purchases() task_input = {'features': []} - with patch('instructor_task.tasks_helper._get_current_task'): + with patch('lms.djangoapps.instructor_task.tasks_helper._get_current_task'): result = upload_exec_summary_report( None, None, self.course.id, task_input, 'generating executive summary report' @@ -1041,7 +1045,7 @@ class TestCourseSurveyReport(TestReportMixin, InstructorTaskCourseTestCase): Test that successfully generates the course survey report. """ task_input = {'features': []} - with patch('instructor_task.tasks_helper._get_current_task'): + with patch('lms.djangoapps.instructor_task.tasks_helper._get_current_task'): result = upload_course_survey_report( None, None, self.course.id, task_input, 'generating course survey report' @@ -1056,7 +1060,7 @@ class TestCourseSurveyReport(TestReportMixin, InstructorTaskCourseTestCase): """ task_input = {'features': []} - with patch('instructor_task.tasks_helper._get_current_task'): + with patch('lms.djangoapps.instructor_task.tasks_helper._get_current_task'): result = upload_course_survey_report( None, None, self.course.id, task_input, 'generating course survey report' @@ -1108,7 +1112,7 @@ class TestStudentReport(TestReportMixin, InstructorTaskCourseTestCase): def test_success(self): self.create_student('student', 'student@example.com') task_input = {'features': []} - with patch('instructor_task.tasks_helper._get_current_task'): + with patch('lms.djangoapps.instructor_task.tasks_helper._get_current_task'): result = upload_students_csv(None, None, self.course.id, task_input, 'calculated') report_store = ReportStore.from_config(config_name='GRADES_DOWNLOAD') links = report_store.links_for(self.course.id) @@ -1134,7 +1138,7 @@ class TestStudentReport(TestReportMixin, InstructorTaskCourseTestCase): 'goals' ] } - with patch('instructor_task.tasks_helper._get_current_task') as mock_current_task: + with patch('lms.djangoapps.instructor_task.tasks_helper._get_current_task') as mock_current_task: mock_current_task.return_value = self.current_task result = upload_students_csv(None, None, self.course.id, task_input, 'calculated') # This assertion simply confirms that the generation completed with no errors @@ -1166,7 +1170,7 @@ class TestTeamStudentReport(TestReportMixin, InstructorTaskCourseTestCase): 'goals', 'team' ] } - with patch('instructor_task.tasks_helper._get_current_task') as mock_current_task: + with patch('lms.djangoapps.instructor_task.tasks_helper._get_current_task') as mock_current_task: mock_current_task.return_value = current_task result = upload_students_csv(None, None, self.course.id, task_input, 'calculated') self.assertDictContainsSubset({'attempted': 2, 'succeeded': 2, 'failed': 0}, result) @@ -1223,7 +1227,7 @@ class TestListMayEnroll(TestReportMixin, InstructorTaskCourseTestCase): def test_success(self): self._create_enrollment('user@example.com') task_input = {'features': []} - with patch('instructor_task.tasks_helper._get_current_task'): + with patch('lms.djangoapps.instructor_task.tasks_helper._get_current_task'): result = upload_may_enroll_csv(None, None, self.course.id, task_input, 'calculated') report_store = ReportStore.from_config(config_name='GRADES_DOWNLOAD') links = report_store.links_for(self.course.id) @@ -1241,7 +1245,7 @@ class TestListMayEnroll(TestReportMixin, InstructorTaskCourseTestCase): self._create_enrollment(email) task_input = {'features': ['email']} - with patch('instructor_task.tasks_helper._get_current_task'): + with patch('lms.djangoapps.instructor_task.tasks_helper._get_current_task'): result = upload_may_enroll_csv(None, None, self.course.id, task_input, 'calculated') # This assertion simply confirms that the generation completed with no errors num_enrollments = len(enrollments) @@ -1258,7 +1262,7 @@ class MockDefaultStorage(object): return open(file_name) -@patch('instructor_task.tasks_helper.DefaultStorage', new=MockDefaultStorage) +@patch('lms.djangoapps.instructor_task.tasks_helper.DefaultStorage', new=MockDefaultStorage) class TestCohortStudents(TestReportMixin, InstructorTaskCourseTestCase): """ Tests that bulk student cohorting works. @@ -1280,7 +1284,7 @@ class TestCohortStudents(TestReportMixin, InstructorTaskCourseTestCase): with tempfile.NamedTemporaryFile() as temp_file: temp_file.write(csv_data.encode('utf-8')) temp_file.flush() - with patch('instructor_task.tasks_helper._get_current_task'): + with patch('lms.djangoapps.instructor_task.tasks_helper._get_current_task'): return cohort_students_and_upload(None, None, self.course.id, {'file_name': temp_file.name}, 'cohorted') def test_username(self): @@ -1489,7 +1493,7 @@ class TestCohortStudents(TestReportMixin, InstructorTaskCourseTestCase): @ddt.ddt -@patch('instructor_task.tasks_helper.DefaultStorage', new=MockDefaultStorage) +@patch('lms.djangoapps.instructor_task.tasks_helper.DefaultStorage', new=MockDefaultStorage) class TestGradeReportEnrollmentAndCertificateInfo(TestReportMixin, InstructorTaskModuleTestCase): """ Test that grade report has correct user enrolment, verification, and certificate information. @@ -1539,7 +1543,7 @@ class TestGradeReportEnrollmentAndCertificateInfo(TestReportMixin, InstructorTas """ Verify grade report data. """ - with patch('instructor_task.tasks_helper._get_current_task'): + with patch('lms.djangoapps.instructor_task.tasks_helper._get_current_task'): upload_grades_csv(None, None, self.course.id, None, 'graded') report_store = ReportStore.from_config(config_name='GRADES_DOWNLOAD') report_csv_filename = report_store.links_for(self.course.id)[0][0] @@ -2161,7 +2165,7 @@ class TestCertificateGeneration(InstructorTaskModuleTestCase): current_task = Mock() current_task.update_state = Mock() - with patch('instructor_task.tasks_helper._get_current_task') as mock_current_task: + with patch('lms.djangoapps.instructor_task.tasks_helper._get_current_task') as mock_current_task: mock_current_task.return_value = current_task with patch('capa.xqueue_interface.XQueueInterface.send_to_queue') as mock_queue: mock_queue.return_value = (0, "Successfully queued") @@ -2208,10 +2212,12 @@ class TestInstructorOra2Report(SharedModuleStoreTestCase): shutil.rmtree(settings.GRADES_DOWNLOAD['ROOT_PATH']) def test_report_fails_if_error(self): - with patch('instructor_task.tasks_helper.OraAggregateData.collect_ora2_data') as mock_collect_data: + with patch( + 'lms.djangoapps.instructor_task.tasks_helper.OraAggregateData.collect_ora2_data' + ) as mock_collect_data: mock_collect_data.side_effect = KeyError - with patch('instructor_task.tasks_helper._get_current_task') as mock_current_task: + with patch('lms.djangoapps.instructor_task.tasks_helper._get_current_task') as mock_current_task: mock_current_task.return_value = self.current_task response = upload_ora2_data(None, None, self.course.id, None, 'generated') @@ -2222,13 +2228,17 @@ class TestInstructorOra2Report(SharedModuleStoreTestCase): test_header = ['field1', 'field2'] test_rows = [['row1_field1', 'row1_field2'], ['row2_field1', 'row2_field2']] - with patch('instructor_task.tasks_helper._get_current_task') as mock_current_task: + with patch('lms.djangoapps.instructor_task.tasks_helper._get_current_task') as mock_current_task: mock_current_task.return_value = self.current_task - with patch('instructor_task.tasks_helper.OraAggregateData.collect_ora2_data') as mock_collect_data: + with patch( + 'lms.djangoapps.instructor_task.tasks_helper.OraAggregateData.collect_ora2_data' + ) as mock_collect_data: mock_collect_data.return_value = (test_header, test_rows) - with patch('instructor_task.models.DjangoStorageReportStore.store_rows') as mock_store_rows: + with patch( + 'lms.djangoapps.instructor_task.models.DjangoStorageReportStore.store_rows' + ) as mock_store_rows: return_val = upload_ora2_data(None, None, self.course.id, None, 'generated') # pylint: disable=maybe-no-member diff --git a/lms/djangoapps/instructor_task/tests/test_views.py b/lms/djangoapps/instructor_task/tests/test_views.py index fc630f8b2f..39bd8217a0 100644 --- a/lms/djangoapps/instructor_task/tests/test_views.py +++ b/lms/djangoapps/instructor_task/tests/test_views.py @@ -9,11 +9,13 @@ from mock import Mock, patch from django.http import QueryDict -from instructor_task.models import PROGRESS -from instructor_task.tests.test_base import (InstructorTaskTestCase, - TEST_FAILURE_MESSAGE, - TEST_FAILURE_EXCEPTION) -from instructor_task.views import instructor_task_status, get_task_completion_info +from lms.djangoapps.instructor_task.models import PROGRESS +from lms.djangoapps.instructor_task.tests.test_base import ( + InstructorTaskTestCase, + TEST_FAILURE_MESSAGE, + TEST_FAILURE_EXCEPTION +) +from lms.djangoapps.instructor_task.views import instructor_task_status, get_task_completion_info class InstructorTaskReportTest(InstructorTaskTestCase): diff --git a/lms/djangoapps/instructor_task/views.py b/lms/djangoapps/instructor_task/views.py index 87488496ee..a1f6a18824 100644 --- a/lms/djangoapps/instructor_task/views.py +++ b/lms/djangoapps/instructor_task/views.py @@ -7,9 +7,8 @@ from django.utils.translation import ugettext as _ from celery.states import FAILURE, REVOKED, READY_STATES -from instructor_task.api_helper import (get_status_from_instructor_task, - get_updated_instructor_task) -from instructor_task.models import PROGRESS +from lms.djangoapps.instructor_task.api_helper import (get_status_from_instructor_task, get_updated_instructor_task) +from lms.djangoapps.instructor_task.models import PROGRESS log = logging.getLogger(__name__) diff --git a/lms/envs/acceptance.py b/lms/envs/acceptance.py index 6766f5057a..cced5f6267 100644 --- a/lms/envs/acceptance.py +++ b/lms/envs/acceptance.py @@ -35,7 +35,7 @@ LOG_OVERRIDES = [ ('codejail.safe_exec', logging.ERROR), ('edx.courseware', logging.ERROR), ('audit', logging.ERROR), - ('instructor_task.api_helper', logging.ERROR), + ('lms.djangoapps.instructor_task.api_helper', logging.ERROR), ] for log_name, log_level in LOG_OVERRIDES: diff --git a/lms/envs/common.py b/lms/envs/common.py index e7a18c4383..602d20987a 100644 --- a/lms/envs/common.py +++ b/lms/envs/common.py @@ -1925,7 +1925,7 @@ INSTALLED_APPS = ( 'certificates', 'dashboard', 'lms.djangoapps.instructor', - 'instructor_task', + 'lms.djangoapps.instructor_task', 'openedx.core.djangoapps.course_groups', 'bulk_email', 'branding', diff --git a/lms/urls.py b/lms/urls.py index 1452b00f3d..964b66fe4c 100644 --- a/lms/urls.py +++ b/lms/urls.py @@ -877,7 +877,7 @@ if settings.FEATURES.get('ENABLE_INSTRUCTOR_BACKGROUND_TASKS'): urlpatterns += ( url( r'^instructor_task_status/$', - 'instructor_task.views.instructor_task_status', + 'lms.djangoapps.instructor_task.views.instructor_task_status', name='instructor_task_status' ), )