Skip to content

Add mass approve/decline UI and backend batch actions (#326, #327)#330

Open
ba88im wants to merge 89 commits intomainfrom
mass-approve-decline
Open

Add mass approve/decline UI and backend batch actions (#326, #327)#330
ba88im wants to merge 89 commits intomainfrom
mass-approve-decline

Conversation

@ba88im
Copy link

@ba88im ba88im commented Mar 6, 2026

General Info

Allow course staff member to mass select and approve/deny requests manually. Also, allow approve/deny requests without refreshing the whole page because that is slow.
To complete this tasks. We divided work into 3 user stories:
1. Make approve / reject be AJAX request and refresh the table instead of the whole page like the current HTTP request / form submission

2. Create the UI checkboxes to select multiple extensions and potentially an option to mass select

3. Update backend to allow mass auto or mass decline

Summary

  • Added checkbox-based multi-select UI to the instructor requests table.
  • Added Approve Selected and Reject Selected batch actions.
  • Added backend mass_approve and mass_reject endpoints returning JSON for AJAX updates.
  • Updated the Stimulus requests controller to support select-all, row selection, and batch updates (including DataTable redraws).
  • Removed the hardcoded export host and made request-link generation environment-safe.

Testing

  • Added Rspec for approve/ reject AJAX
  • Aded controller specs covering batch approve/reject flows.

gobears01 and others added 4 commits March 4, 2026 20:55
- Add row/select-all checkboxes and batch approve/reject buttons in instructor requests table

- Add mass_approve and mass_reject routes + controller actions with JSON responses

- Extend Stimulus controller for batch selection/action handling with DataTable updates

- Add controller specs for mass endpoints

- Remove hardcoded export host and build environment-safe request links
- align multi-line message assignment for RuboCop

- update controller specs to use response.parsed_body and contain_exactly

- use class_double for CanvasFacade.from_user stubbing
@gobears01
Copy link

Dear Professor @armandofox,

Basim and I have added the feature to mass approve/ deny requests manually and changed approve/deny to AJAX instead of full page reload per this golden repo feature request and your review is appreciated.

Sincerely,

Anthony Dam

@gobears01 gobears01 requested a review from armandofox March 10, 2026 01:10
gobears01 and others added 20 commits March 16, 2026 19:29
Bumps [puma](https://github.com/puma/puma) from 7.1.0 to 7.2.0.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/main/History.md)
- [Commits](puma/puma@v7.1.0...v7.2.0)

---
updated-dependencies:
- dependency-name: puma
  dependency-version: 7.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Bumps [bootsnap](https://github.com/rails/bootsnap) from 1.20.1 to 1.21.1.
- [Release notes](https://github.com/rails/bootsnap/releases)
- [Changelog](https://github.com/rails/bootsnap/blob/main/CHANGELOG.md)
- [Commits](rails/bootsnap@v1.20.1...v1.21.1)

---
updated-dependencies:
- dependency-name: bootsnap
  dependency-version: 1.21.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Bumps [pg](https://github.com/ged/ruby-pg) from 1.6.2 to 1.6.3.
- [Changelog](https://github.com/ged/ruby-pg/blob/master/CHANGELOG.md)
- [Commits](ged/ruby-pg@v1.6.2...v1.6.3)

---
updated-dependencies:
- dependency-name: pg
  dependency-version: 1.6.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Bumps [sentry-rails](https://github.com/getsentry/sentry-ruby) from 6.2.0 to 6.3.0.
- [Release notes](https://github.com/getsentry/sentry-ruby/releases)
- [Changelog](https://github.com/getsentry/sentry-ruby/blob/master/CHANGELOG.md)
- [Commits](getsentry/sentry-ruby@6.2.0...6.3.0)

---
updated-dependencies:
- dependency-name: sentry-rails
  dependency-version: 6.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Bumps [axe-core-cucumber](https://github.com/dequelabs/axe-core-gems) from 4.11.0 to 4.11.1.
- [Release notes](https://github.com/dequelabs/axe-core-gems/releases)
- [Changelog](https://github.com/dequelabs/axe-core-gems/blob/develop/CHANGELOG.md)
- [Commits](dequelabs/axe-core-gems@v4.11.0...v4.11.1)

---
updated-dependencies:
- dependency-name: axe-core-cucumber
  dependency-version: 4.11.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Bumps [bootstrap](https://github.com/twbs/bootstrap-rubygem) from 5.3.5 to 5.3.8.
- [Release notes](https://github.com/twbs/bootstrap-rubygem/releases)
- [Changelog](https://github.com/twbs/bootstrap-rubygem/blob/main/CHANGELOG.md)
- [Commits](twbs/bootstrap-rubygem@v5.3.5...v5.3.8)

---
updated-dependencies:
- dependency-name: bootstrap
  dependency-version: 5.3.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Bumps [turbo-rails](https://github.com/hotwired/turbo-rails) from 2.0.21 to 2.0.23.
- [Release notes](https://github.com/hotwired/turbo-rails/releases)
- [Commits](hotwired/turbo-rails@v2.0.21...v2.0.23)

---
updated-dependencies:
- dependency-name: turbo-rails
  dependency-version: 2.0.23
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.82.1 to 1.84.2.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](rubocop/rubocop@v1.82.1...v1.84.2)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-version: 1.84.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Bumps [bootsnap](https://github.com/rails/bootsnap) from 1.21.1 to 1.23.0.
- [Release notes](https://github.com/rails/bootsnap/releases)
- [Changelog](https://github.com/rails/bootsnap/blob/main/CHANGELOG.md)
- [Commits](rails/bootsnap@v1.21.1...v1.23.0)

---
updated-dependencies:
- dependency-name: bootsnap
  dependency-version: 1.23.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Bumps [sentry-ruby](https://github.com/getsentry/sentry-ruby) from 6.3.0 to 6.3.1.
- [Release notes](https://github.com/getsentry/sentry-ruby/releases)
- [Changelog](https://github.com/getsentry/sentry-ruby/blob/master/CHANGELOG.md)
- [Commits](getsentry/sentry-ruby@6.3.0...6.3.1)

---
updated-dependencies:
- dependency-name: sentry-ruby
  dependency-version: 6.3.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Bumps [annotaterb](https://github.com/drwl/annotaterb) from 4.20.0 to 4.22.0.
- [Changelog](https://github.com/drwl/annotaterb/blob/main/CHANGELOG.md)
- [Commits](drwl/annotaterb@v4.20.0...v4.22.0)

---
updated-dependencies:
- dependency-name: annotaterb
  dependency-version: 4.22.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Bumps the bundler group with 1 update in the / directory: [faraday](https://github.com/lostisland/faraday).


Updates `faraday` from 2.14.0 to 2.14.1
- [Release notes](https://github.com/lostisland/faraday/releases)
- [Changelog](https://github.com/lostisland/faraday/blob/main/CHANGELOG.md)
- [Commits](lostisland/faraday@v2.14.0...v2.14.1)

---
updated-dependencies:
- dependency-name: faraday
  dependency-version: 2.14.1
  dependency-type: direct:production
  dependency-group: bundler
...

Signed-off-by: dependabot[bot] <[email protected]>
Bumps [brakeman](https://github.com/presidentbeef/brakeman) from 7.1.2 to 8.0.2.
- [Release notes](https://github.com/presidentbeef/brakeman/releases)
- [Changelog](https://github.com/presidentbeef/brakeman/blob/main/CHANGES.md)
- [Commits](presidentbeef/brakeman@v7.1.2...v8.0.2)

---
updated-dependencies:
- dependency-name: brakeman
  dependency-version: 8.0.2
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
cycomachead and others added 30 commits March 17, 2026 17:50
Bumps [brakeman](https://github.com/presidentbeef/brakeman) from 8.0.2 to 8.0.4.
- [Release notes](https://github.com/presidentbeef/brakeman/releases)
- [Changelog](https://github.com/presidentbeef/brakeman/blob/main/CHANGES.md)
- [Commits](presidentbeef/brakeman@v8.0.2...v8.0.4)

---
updated-dependencies:
- dependency-name: brakeman
  dependency-version: 8.0.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Bumps the npm_and_yarn group with 2 updates in the / directory: [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) and [minimatch](https://github.com/isaacs/minimatch).


Updates `fast-xml-parser` from 5.3.6 to 5.4.1
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)
- [Commits](NaturalIntelligence/fast-xml-parser@v5.3.6...v5.4.1)

Updates `minimatch` from 10.1.1 to 10.2.4
- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md)
- [Commits](isaacs/minimatch@v10.1.1...v10.2.4)

Updates `minimatch` from 5.1.6 to 5.1.9
- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md)
- [Commits](isaacs/minimatch@v10.1.1...v10.2.4)

---
updated-dependencies:
- dependency-name: fast-xml-parser
  dependency-version: 5.4.1
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: minimatch
  dependency-version: 10.2.4
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: minimatch
  dependency-version: 5.1.9
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <[email protected]>
Bumps the npm_and_yarn group with 1 update in the / directory: [dompurify](https://github.com/cure53/DOMPurify).


Updates `dompurify` from 3.3.0 to 3.3.2
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](cure53/DOMPurify@3.3.0...3.3.2)

---
updated-dependencies:
- dependency-name: dompurify
  dependency-version: 3.3.2
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <[email protected]>
Bumps the npm_and_yarn group with 1 update in the / directory: [undici](https://github.com/nodejs/undici).


Updates `undici` from 6.22.0 to 6.24.0
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](nodejs/undici@v6.22.0...v6.24.0)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 6.24.0
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <[email protected]>
…s UI to toggles to match course settings toggles
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants