Update Canvas and Gradescope integrations to handle late due dates for extensions#272
Open
cycomachead wants to merge 11 commits intomainfrom
Conversation
Updated LMS integrations to automatically manage late due dates (lock dates) when provisioning extensions. Added a new course setting to control whether late due dates shift by the extension delta or remain at the later of the original late date and the new due date. - Added `extend_late_due_date` to course settings with a UI toggle - Implemented late due date calculation logic in the Request model - Updated CanvasFacade to use `close_date` (lock_at) - Updated GradescopeFacade to use `late_due_date` (hard_due_date) - Added database migration and backfill rake task for existing courses - Added comprehensive unit tests for models and facades Co-authored-by: Claude Code <noreply@anthropic.com>
…-handle-late-due-dates-for-extensions-hWNcq7Kk6T7H * main: gitignore improved GS user copy Bump sentry-rails from 6.2.0 to 6.3.0 Gradescope note Bump puma from 7.1.0 to 7.2.0 Allow overriding PORT Add a /help redirect, move some routes around Bump pg from 1.6.2 to 1.6.3 Bump bootsnap from 1.20.1 to 1.21.1
cycomachead
commented
Feb 12, 2026
app/facades/gradescope_facade.rb
Outdated
| 'value' => new_due_date | ||
| } | ||
| # Use the late due date for hard_due_date (Gradescope API field) if provided, otherwise fall back to the due date | ||
| late_due_date = new_late_due_date || new_due_date |
Contributor
Author
There was a problem hiding this comment.
This is actually tricker than I thought because we might want to leave it off if it's originally off.
cycomachead
commented
Feb 12, 2026
|
|
||
| ActiveRecord::Schema[7.2].define(version: 2025_10_01_192900) do | ||
| ActiveRecord::Schema[7.2].define(version: 2026_02_02_000001) do | ||
| create_schema "hypershield" |
Contributor
Author
There was a problem hiding this comment.
not sure if this is an issue. :/
Introduce `AssignmentDateCalculator` to centralize due date and late due date logic. This ensures that late due dates are only set on external services if they exist on the original assignment, and correctly handles course settings for shifting or capping dates. - Update Canvas and Gradescope facades to accept nil late due dates - Delegate date calculation in `Request` model to the new service - Add comprehensive tests for the new calculator and update existing facade and model specs to reflect the refactored logic Co-authored-by: Claude Code <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The integrations for Canvas and Gradescope need updating. They need to set the
late due datefield when posting an extension.Create new course setting, true by default, and add a script to back fill all old courses called "Extend Late Due Date Automatically"
Please add tests and suggest refactoring as necessary
Superconductor Ticket Implementation | App Preview