diff --git a/app/controllers/course/object_duplications_controller.rb b/app/controllers/course/object_duplications_controller.rb index 2bc3a382a80..44013bba1c7 100644 --- a/app/controllers/course/object_duplications_controller.rb +++ b/app/controllers/course/object_duplications_controller.rb @@ -4,7 +4,6 @@ class Course::ObjectDuplicationsController < Course::ComponentController helper Course::Achievement::AchievementsHelper def new - load_source_courses_data load_destination_courses_data load_items_data load_destination_instances_data @@ -25,18 +24,6 @@ def authorize_duplication private - def load_source_courses_data - ActsAsTenant.without_tenant do - # Workaround to get Courses where current user is allowed to duplicate contents from - # without having to use accessible_by, which can take up to 5 minutes with includes - course_copiers = CourseUser.where(user: current_user). - where(role: CourseUser::MANAGER_ROLES.to_a) + - CourseUser.where(user: current_user). - where(role: :observer) - @source_courses = Course.includes(:instance).find(course_copiers.map(&:course_id)) - end - end - def load_destination_courses_data ActsAsTenant.without_tenant do # Workaround to get Courses where current user plays one of manager roles diff --git a/app/views/course/object_duplications/data.json.jbuilder b/app/views/course/object_duplications/data.json.jbuilder deleted file mode 100644 index b8031ddce0e..00000000000 --- a/app/views/course/object_duplications/data.json.jbuilder +++ /dev/null @@ -1,2 +0,0 @@ -# frozen_string_literal: true -json.partial! 'course_duplication_data' diff --git a/app/views/course/object_duplications/new.json.jbuilder b/app/views/course/object_duplications/new.json.jbuilder index 88bcb39721f..070191e3552 100644 --- a/app/views/course/object_duplications/new.json.jbuilder +++ b/app/views/course/object_duplications/new.json.jbuilder @@ -1,11 +1,6 @@ # frozen_string_literal: true json.currentHost current_tenant.host -json.sourceCourses @source_courses do |course| - json.(course, :id, :title) - json.host course.instance.host -end - json.destinationCourses @destination_courses do |course| json.(course, :id, :title) json.path course_path(course) diff --git a/client/app/api/course/Duplication.js b/client/app/api/course/Duplication.js index 8f7330afa9b..52aa4c34052 100644 --- a/client/app/api/course/Duplication.js +++ b/client/app/api/course/Duplication.js @@ -9,7 +9,6 @@ export default class DuplicationAPI extends BaseCourseAPI { * currentHost: string, * destinationCourses: Array., * destinationInstances: Array., - * sourceCourses: courseListingShape, * sourceCourse: sourceCourseShape, * assessmentComponent: Array., * surveyComponent: Array., diff --git a/client/app/bundles/course/duplication/pages/Duplication/index.jsx b/client/app/bundles/course/duplication/pages/Duplication/index.jsx index 38de983a00c..b63624ab319 100644 --- a/client/app/bundles/course/duplication/pages/Duplication/index.jsx +++ b/client/app/bundles/course/duplication/pages/Duplication/index.jsx @@ -13,10 +13,7 @@ import PropTypes from 'prop-types'; import { duplicationModes } from 'course/duplication/constants'; import { fetchObjectsList } from 'course/duplication/operations'; -import { - courseListingShape, - sourceCourseShape, -} from 'course/duplication/propTypes'; +import { sourceCourseShape } from 'course/duplication/propTypes'; import { actions } from 'course/duplication/store'; import Page from 'lib/components/core/layouts/Page'; import LoadingIndicator from 'lib/components/core/LoadingIndicator'; @@ -241,7 +238,6 @@ Duplication.propTypes = { currentHost: PropTypes.string.isRequired, currentCourseId: PropTypes.number, sourceCourse: sourceCourseShape.isRequired, - sourceCourses: courseListingShape, dispatch: PropTypes.func.isRequired, intl: PropTypes.object, @@ -260,7 +256,6 @@ export default Object.assign( currentHost: duplication.currentHost, currentCourseId: duplication.currentCourseId, sourceCourse: duplication.sourceCourse, - sourceCourses: duplication.sourceCourses, }))(injectIntl(Duplication)), { handle }, ); diff --git a/spec/features/course/duplication_spec.rb b/spec/features/course/duplication_spec.rb index 9f28f8aa0e1..dfc12b3d476 100644 --- a/spec/features/course/duplication_spec.rb +++ b/spec/features/course/duplication_spec.rb @@ -42,7 +42,7 @@ expect(find_sidebar).to have_text(I18n.t('layouts.duplication.title')) end - context 'when I am a manager in another course' do + context 'when I am a manager in one specific course' do let(:source_course) { create(:course) } let!(:course_user) { create(:course_manager, course: source_course, user: user) } let(:assessment_title1) { SecureRandom.hex } @@ -58,17 +58,14 @@ end scenario 'I can duplicate objects from that course' do - visit course_duplication_path(course) - - find('.source-course-dropdown').click - find("[role='option']", text: source_course.title).click + visit course_duplication_path(source_course) find("input[value='OBJECT']", visible: false).click find('.destination-course-dropdown').click find("[role='option']", text: course.title).click - find('.items-selector-menu span span', text: 'Assessments').click + find('.items-selector-menu span', text: 'Assessments').click find('label', text: assessment_title1).click click_on 'Duplicate Items' click_on 'Duplicate' @@ -78,10 +75,7 @@ end scenario 'I can duplicate the whole course' do - visit course_duplication_path(course) - - find('.source-course-dropdown').click - find("[role='option']", text: source_course.title).click + visit course_duplication_path(source_course) fill_in 'new_title', with: '' fill_in 'new_title', with: new_course_title @@ -89,7 +83,6 @@ click_on 'Duplicate Course' click_on 'Continue' - expect(page).not_to have_css('.source-course-dropdown') wait_for_job duplicated_course = Course.find_by(title: new_course_title) expect(duplicated_course).to be_present