Merge pull request #113 from edx/matthugs/add-configurability-of-bulk-management-features

Add support for waffling off bulk management
This commit is contained in:
Matt Hughes
2019-08-20 16:32:46 -04:00
committed by GitHub
7 changed files with 32 additions and 5 deletions

View File

@@ -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 && (
<div>
<StatefulButton
buttonType="primary"
@@ -904,7 +904,6 @@ Gradebook.defaultProps = {
errorFetchingGradeOverrideHistory: false,
totalUsersCount: null,
filteredUsersCount: null,
showDownloadButtons: false,
};
Gradebook.propTypes = {
@@ -990,7 +989,6 @@ Gradebook.propTypes = {
})),
totalUsersCount: PropTypes.number,
filteredUsersCount: PropTypes.number,
showDownloadButtons: PropTypes.bool,
initializeFilters: PropTypes.func.isRequired,
updateGradesIfAssignmentGradeFiltersSet: PropTypes.func.isRequired,
updateCourseGradeFilter: PropTypes.func.isRequired,

View File

@@ -105,8 +105,7 @@ const mapStateToProps = (state, ownProps) => (
'',
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,

View File

@@ -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());

View File

@@ -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;

View File

@@ -0,0 +1,3 @@
const GOT_BULK_MANAGEMENT_CONFIG = 'GOT_BULK_MANAGEMENT_CONFIG';
export default GOT_BULK_MANAGEMENT_CONFIG;

View File

@@ -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;

View File

@@ -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;