feat: let faculty create arbitrary Scratch projects, with rename and delete - #48
Open
ishad05 wants to merge 13 commits into
Open
feat: let faculty create arbitrary Scratch projects, with rename and delete#48ishad05 wants to merge 13 commits into
ishad05 wants to merge 13 commits into
Conversation
- Implemented Scratch as a new submission type for assignments. - Updated the project submission process to allow for revising existing submissions. - Added functionality to prevent resubmission after grades are published. - Created a new ScratchSubmissionPlayer component for faculty to preview student submissions in a read-only mode. - Enhanced the AssignmentTable and SubmissionPreviewDialog components to support Scratch submissions. - Updated the CreateAssignmentSheet to include Scratch as a submission option. - Modified FacultyAssignmentDetailPage and FacultyGradingPage to handle Scratch submissions. - Added hooks for starting Scratch submissions directly from the dashboard. - Implemented tests for Scratch submission functionality, including UI interactions and submission confirmations. - Updated e2e tests to cover Scratch assignment creation and submission scenarios.
…nment closure checks
…d project deletion and renaming functionality
ishad05
changed the base branch from
develop
to
feat/scratch-assignment-submissions
July 17, 2026 10:02
…ratch-projects # Conflicts: # cs17_portal/api.py # cs17_portal/patches.txt # dashboard/src/hooks/useScratchEditor.ts # dashboard/src/pages/ProjectEditorPage.tsx # e2e/tests/student-submission.spec.ts
Both feat and develop added a project-cleanup loop to the afterAll hook at different positions; the merge stacked them, redeclaring `projects` and breaking the Playwright parse. Keep the single cleanup that runs before cleanupTestAssignments so linked projects are deleted first. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Newer Frappe develop renders the credentials submit button as "Continue" without the .btn-login class, breaking the UI login tests in CI while they passed against older local Frappe. Locate the button by role + accessible name instead of the stale class selector. Co-Authored-By: Claude Opus 4.8 <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.
Description
Closes #43.
What changed
Scope
Projects were student-only in the API, the permissions, and the route guard, so a sidebar link alone would have redirected faculty away. Ownership is generalised from "student" to "profile".
Migrations
Two schema changes, both with patches, both run against a real site:
CS17 Project.studentrenamed toprofile.CS17 Project.assignmentadded, linking to the assignment a project was started from. Empty means standalone.Notes
delete_assignmentnow unlinks first. The doctype wide ignore hook would have worked too, but it would also let a profile delete orphan its projects.Testing
test_cs17_project, 7test_api.tscandyarn buildclean.