diff --git a/src/components/Gradebook/index.jsx b/src/components/Gradebook/index.jsx
index c931aa5..050f333 100644
--- a/src/components/Gradebook/index.jsx
+++ b/src/components/Gradebook/index.jsx
@@ -683,7 +683,7 @@ export default class Gradebook extends React.Component {
options={[{ label: 'Percent', value: 'percent' }, { label: 'Absolute', value: 'absolute' }]}
onChange={this.props.toggleFormat}
/>
- {this.props.showDownloadButtons && (
+ {this.props.showBulkManagement && (
(
'',
uploadSuccess: !!(state.grades.bulkManagement &&
state.grades.bulkManagement.uploadSuccess),
- showBulkManagement: stateHasMastersTrack(state),
- showDownloadButtons: stateHasMastersTrack(state),
+ showBulkManagement: stateHasMastersTrack(state) && state.config.bulkManagementAvailable,
bulkManagementHistory: getBulkManagementHistory(state),
totalUsersCount: state.grades.totalUsersCount,
filteredUsersCount: state.grades.filteredUsersCount,
diff --git a/src/data/actions/assignmentTypes.js b/src/data/actions/assignmentTypes.js
index d6638b6..e09714c 100644
--- a/src/data/actions/assignmentTypes.js
+++ b/src/data/actions/assignmentTypes.js
@@ -4,12 +4,17 @@ import {
ERROR_FETCHING_ASSIGNMENT_TYPES,
GOT_ARE_GRADES_FROZEN,
} from '../constants/actionTypes/assignmentTypes';
+import GOT_BULK_MANAGEMENT_CONFIG from '../constants/actionTypes/config';
import LmsApiService from '../services/LmsApiService';
const startedFetchingAssignmentTypes = () => ({ type: STARTED_FETCHING_ASSIGNMENT_TYPES });
const errorFetchingAssignmentTypes = () => ({ type: ERROR_FETCHING_ASSIGNMENT_TYPES });
const gotAssignmentTypes = assignmentTypes => ({ type: GOT_ASSIGNMENT_TYPES, assignmentTypes });
const gotGradesFrozen = areGradesFrozen => ({ type: GOT_ARE_GRADES_FROZEN, areGradesFrozen });
+const gotBulkManagementConfig = bulkManagementEnabled => ({
+ type: GOT_BULK_MANAGEMENT_CONFIG,
+ data: bulkManagementEnabled,
+});
const fetchAssignmentTypes = courseId => (
(dispatch) => {
@@ -19,6 +24,7 @@ const fetchAssignmentTypes = courseId => (
.then((data) => {
dispatch(gotAssignmentTypes(Object.keys(data.assignment_types)));
dispatch(gotGradesFrozen(data.grades_frozen));
+ dispatch(gotBulkManagementConfig(data.can_see_bulk_management));
})
.catch(() => {
dispatch(errorFetchingAssignmentTypes());
diff --git a/src/data/actions/assignmentTypes.test.js b/src/data/actions/assignmentTypes.test.js
index ca172d1..613f7ce 100644
--- a/src/data/actions/assignmentTypes.test.js
+++ b/src/data/actions/assignmentTypes.test.js
@@ -11,6 +11,7 @@ import {
ERROR_FETCHING_ASSIGNMENT_TYPES,
GOT_ARE_GRADES_FROZEN,
} from '../constants/actionTypes/assignmentTypes';
+import GOT_BULK_MANAGEMENT_CONFIG from '../constants/actionTypes/config';
const mockStore = configureMockStore([thunk]);
const axiosMock = new MockAdapter(apiClient);
@@ -42,12 +43,14 @@ describe('actions', () => {
},
},
grades_frozen: false,
+ can_see_bulk_management: true,
};
it('dispatches success action after fetching fetchAssignmentTypes', () => {
const expectedActions = [
{ type: STARTED_FETCHING_ASSIGNMENT_TYPES },
{ type: GOT_ASSIGNMENT_TYPES, assignmentTypes: Object.keys(responseData.assignment_types) },
{ type: GOT_ARE_GRADES_FROZEN, areGradesFrozen: responseData.grades_frozen },
+ { type: GOT_BULK_MANAGEMENT_CONFIG, data: true },
];
const store = mockStore();
@@ -79,6 +82,7 @@ describe('actions', () => {
{ type: STARTED_FETCHING_ASSIGNMENT_TYPES },
{ type: GOT_ASSIGNMENT_TYPES, assignmentTypes: Object.keys(responseData.assignment_types) },
{ type: GOT_ARE_GRADES_FROZEN, areGradesFrozen: true },
+ { type: GOT_BULK_MANAGEMENT_CONFIG, data: true },
];
const store = mockStore();
responseData.grades_frozen = true;
diff --git a/src/data/constants/actionTypes/config.js b/src/data/constants/actionTypes/config.js
new file mode 100644
index 0000000..af5c684
--- /dev/null
+++ b/src/data/constants/actionTypes/config.js
@@ -0,0 +1,3 @@
+const GOT_BULK_MANAGEMENT_CONFIG = 'GOT_BULK_MANAGEMENT_CONFIG';
+
+export default GOT_BULK_MANAGEMENT_CONFIG;
diff --git a/src/data/reducers/config.js b/src/data/reducers/config.js
new file mode 100644
index 0000000..e98685a
--- /dev/null
+++ b/src/data/reducers/config.js
@@ -0,0 +1,15 @@
+import GOT_BULK_MANAGEMENT_CONFIG from '../constants/actionTypes/config';
+
+const reducer = (state = {}, action) => {
+ switch (action.type) {
+ case GOT_BULK_MANAGEMENT_CONFIG:
+ return {
+ ...state,
+ bulkManagementAvailable: action.data,
+ };
+ default:
+ return state;
+ }
+};
+
+export default reducer;
diff --git a/src/data/reducers/index.js b/src/data/reducers/index.js
index e5330ec..b910077 100755
--- a/src/data/reducers/index.js
+++ b/src/data/reducers/index.js
@@ -6,6 +6,7 @@ import tracks from './tracks';
import assignmentTypes from './assignmentTypes';
import roles from './roles';
import filters from './filters';
+import config from './config';
const rootReducer = combineReducers({
grades,
@@ -14,6 +15,7 @@ const rootReducer = combineReducers({
assignmentTypes,
roles,
filters,
+ config,
});
export default rootReducer;