For certain classes, assignments are created on an as-needed basis (ACM / ACM-W Attendance for 101) or updated in new assignments (A07A vs A072022 for 102), and there doesn't currently exist a way to elegantly handle these cases when selecting the assignments to grade.
Issue
Currently, the workaround for this involves creating a new config file after the assignment has been created on Canvas via the web interface. This is really time-consuming and not a good user experience. It is also annoying to have to interrupt the workflow to create a new assignment in Canvas or not have to re-pull the entire config file when a new assignment is created in Canvas in the 102 workflow.
The Canvas API supports creating assignments with the assignments module for the API, it also supports pulling a single assignment with nothing but the course ID and the assignment ID.
For the case where the assignment exists on Canvas but not in the config file, a solution would be to prompt the user if they would like to override the warning when an assignment could not be found in the config file and then ask if the assignment already exists on Canvas, and if so, what the ID is to solely update the config file to add the assignment in.
In the case where the assignment does not yet exist, a solution would be to walk the user through creating a new assignment. This would include the assignment name, the points on the assignment, and the group that the assignment should be assigned to.
Acceptance Criteria
[ ] Support is added to the Canvas API wrapper to pull a single assignment
[ ] Support is added to the Canvas API wrapper to create a new assignment
[ ] Support is added to the Config module to support rewriting a config file
[ ] Support is added to the UI to allow assignment overriding
[ ] Canvas API wrapper knows if an assignment was created on Canvas successfully or not
[ ] Canvas API wrapper will notify the UI of the status of the assignment creation
[ ] UI is elegantly notified by the Canvas API wrapper when an assignment needs to be created or updated
[ ] UI is able to walk the user through creating a new assignment
[ ] UI is able to walk the user through pulling an existing assignment from Canvas
[ ] After assignments are created or updated rest of the grading process is unchanged
[ ] Assignments on Canvas are created with the correct assignment name as entered by the user
[ ] Assignments on Canvas are created with correct points as entered by the user
[ ] Assignments on Canvas are assigned to the correct assignment group as defined by the user
[ ] Assignments on Canvas are created in the 'Published' state.
[ ] Config file is updated with the new assignment
Description
For certain classes, assignments are created on an as-needed basis (ACM / ACM-W Attendance for 101) or updated in new assignments (A07A vs A072022 for 102), and there doesn't currently exist a way to elegantly handle these cases when selecting the assignments to grade.
Issue
Currently, the workaround for this involves creating a new config file after the assignment has been created on Canvas via the web interface. This is really time-consuming and not a good user experience. It is also annoying to have to interrupt the workflow to create a new assignment in Canvas or not have to re-pull the entire config file when a new assignment is created in Canvas in the 102 workflow.
Suggestion
https://canvas.instructure.com/doc/api/assignments.html#method.assignments_api.create
The Canvas API supports creating assignments with the assignments module for the API, it also supports pulling a single assignment with nothing but the course ID and the assignment ID.
For the case where the assignment exists on Canvas but not in the config file, a solution would be to prompt the user if they would like to override the warning when an assignment could not be found in the config file and then ask if the assignment already exists on Canvas, and if so, what the ID is to solely update the config file to add the assignment in.
In the case where the assignment does not yet exist, a solution would be to walk the user through creating a new assignment. This would include the assignment name, the points on the assignment, and the group that the assignment should be assigned to.
Acceptance Criteria