Skip to content

Commit 650e932

Browse files
authored
Simplify Bulk Management Config (#200)
* refactor: simplify bulk management enabling Formerly, a course had to have bulk management enabled and have a master's track. This painted us into a corner where we had to create a workaround for enabling bulk management on non-master's track courses. Instead, this relies only on an enabled flag from edx-platform (based on a course waffle flag) which simplifies the enabling code here. * feat: remove unneeded bulk management allow-list
1 parent e8a8cca commit 650e932

File tree

10 files changed

+17
-98
lines changed

10 files changed

+17
-98
lines changed

.env

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,3 @@ ENTERPRISE_MARKETING_URL=''
3030
ENTERPRISE_MARKETING_UTM_SOURCE=''
3131
ENTERPRISE_MARKETING_UTM_CAMPAIGN=''
3232
ENTERPRISE_MARKETING_FOOTER_UTM_MEDIUM=''
33-
BULK_MANAGEMENT_SPECIAL_ACCESS_COURSE_IDS=''

.env.development

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,3 @@ ENTERPRISE_MARKETING_URL='http://example.com'
3636
ENTERPRISE_MARKETING_UTM_SOURCE='example.com'
3737
ENTERPRISE_MARKETING_UTM_CAMPAIGN='example.com Referral'
3838
ENTERPRISE_MARKETING_FOOTER_UTM_MEDIUM='Footer'
39-
BULK_MANAGEMENT_SPECIAL_ACCESS_COURSE_IDS=''

documentation/testing/test-plan.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ Confirm the following workflows:
6868
- [ ] Clicking "Save Grade" applies the override, shows the successful "grade has been edited" banner and updates score in grades table (may take a few seconds).
6969
- [ ] Opening back up the "Edit Grades" modal shows the change as an entry in the override history table.
7070

71-
- [ ] *Masters only*: "Bulk Management" allows overriding grades in bulk.
71+
- [ ] *Master's (or selectively-enabled) only*: "Bulk Management" allows overriding grades in bulk.
7272
- Open a non-masters-track course.
7373
- [ ] Verify that the "Bulk Management" tab does not appear.
7474
- [ ] Verify that the "Bulk Management" button does not appear.

documentation/testing/test-setup.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ Suggested resources:
1414
- [Adding Exercises and Tools](https://edx.readthedocs.io/projects/edx-partner-course-staff/en/latest/grading/index.html)
1515
- [Set the Assignment Type and Due Date for a Subsection](https://edx.readthedocs.io/projects/edx-partner-course-staff/en/latest/developing_course/course_subsections.html#set-the-assignment-type-and-due-date-for-a-subsection)
1616

17-
## Enable Gradebook and feature toggles for course
17+
## Enable Gradebook for course
1818

1919
See README.md #Quickstart for more detailed instructions.
2020

@@ -25,7 +25,13 @@ As an admin user, visit Django Admin (`{lms-url}/admin`) to modify features.
2525
- [ ] Set name to `grades.assume_zero_grade_if_absent`, select "Active", and click "Save"
2626
- In Waffle_Utils > Waffle flag course overrides:
2727
- [ ] Add a new flag called `grades.writeable_gradebook`, select "Force On", and enable it for your course
28-
- [ ] Add a new flag called `grades.bulk_management`, select "Force On", and enable it for your course
28+
29+
## Enable Bulk Management
30+
31+
Bulk Management is an added feature to allow modifying grades in bulk via CSV upload. Bulk Management is default enabled for Master's track courses but can be selectively enabled for other courses with a waffle flag following the steps below.
32+
33+
- In Waffle_Utils > Waffle flag course overrides:
34+
- [ ] Add a new flag called `grades.bulk_management`, select "Force On", and enable it for your course.
2935

3036
## Create a Master's track for testing Master's-only features
3137

package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@edx/frontend-app-gradebook",
3-
"version": "1.4.45",
3+
"version": "1.4.46",
44
"description": "edx editable gradebook-ui to manipulate grade overrides on subsections",
55
"repository": {
66
"type": "git",

src/data/selectors/index.js

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import cohorts from './cohorts';
1010
import filters from './filters';
1111
import grades, { minGrade, maxGrade } from './grades';
1212
import roles from './roles';
13-
import special from './special';
1413
import tracks from './tracks';
1514

1615
const {
@@ -218,15 +217,11 @@ export const shouldShowSpinner = (state) => (
218217

219218
/**
220219
* showBulkManagement(state, options)
221-
* Returns true iff the user has special access or bulk management is configured to be available
222-
* and the course has a masters track.
220+
* Returns true iff the course has bulk management enabled
223221
* @param {object} state - redux state
224222
* @return {bool} - should show bulk management controls?
225223
*/
226-
export const showBulkManagement = (state) => (
227-
special.hasSpecialBulkManagementAccess(app.courseId(state))
228-
|| (tracks.stateHasMastersTrack(state) && state.config.bulkManagementAvailable)
229-
);
224+
export const showBulkManagement = (state) => (state.config.bulkManagementAvailable);
230225

231226
export default StrictDict({
232227
root: StrictDict({
@@ -247,6 +242,5 @@ export default StrictDict({
247242
filters,
248243
grades,
249244
roles,
250-
special,
251245
tracks,
252246
});

src/data/selectors/index.test.js

Lines changed: 4 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -493,43 +493,13 @@ describe('root selectors', () => {
493493
});
494494
});
495495
describe('showBulkManagement', () => {
496-
const mockAccess = (val) => {
497-
selectors.special.hasSpecialBulkManagementAccess = jest.fn(() => val);
498-
};
499-
const mockHasMastersTrack = (val) => {
500-
selectors.tracks.stateHasMastersTrack = jest.fn(() => val);
501-
};
502496
const selector = moduleSelectors.showBulkManagement;
503497
const mkState = (bulkManagementAvailable) => ({ config: { bulkManagementAvailable } });
504-
describe('user has special bulk management access', () => {
505-
it('returns true', () => {
506-
mockAccess(true);
507-
mockHasMastersTrack(false);
508-
expect(selector(mkState(true))).toEqual(true);
509-
});
498+
it('returns true when bulk management is enabled for the course', () => {
499+
expect(selector(mkState(true))).toEqual(true);
510500
});
511-
describe('user does not have special access', () => {
512-
beforeEach(() => {
513-
mockAccess(false);
514-
});
515-
describe('course has a masters track, but bulkManagement not available', () => {
516-
it('returns false', () => {
517-
mockHasMastersTrack(true);
518-
expect(selector(mkState(false))).toEqual(false);
519-
});
520-
});
521-
describe('course does not have a masters track, but bulkManagement available', () => {
522-
it('returns false', () => {
523-
mockHasMastersTrack(false);
524-
expect(selector(mkState(true))).toEqual(false);
525-
});
526-
});
527-
describe('course has a masters track, and bulkManagement is available', () => {
528-
it('returns false', () => {
529-
mockHasMastersTrack(true);
530-
expect(selector(mkState(true))).toEqual(true);
531-
});
532-
});
501+
it('returns false when bulk management is not enabled for the course', () => {
502+
expect(selector(mkState(false))).toEqual(false);
533503
});
534504
});
535505
});

src/data/selectors/special.js

Lines changed: 0 additions & 22 deletions
This file was deleted.

src/data/selectors/special.test.js

Lines changed: 0 additions & 27 deletions
This file was deleted.

0 commit comments

Comments
 (0)