1.0.0 • Published 6 months ago

cga-assignment-syncer v1.0.0

Weekly downloads
-
License
ISC
Repository
-
Last release
6 months ago

CGA Assignments syncer

This module handles events from Canvas. We sync assignments, submissions, grades, and comments from Canvas and save them in our database.

Terms

  • Assignment group - categorises the assignments, each assignment belongs to 1 assignment group
  • Assignment - contains the assignment details such as the grading type, and possible submission types
  • Assignment submission - the submission of a student id to an assignment, a student can submit multiple submissions if allowed by teacher. The highest attempt number is the latest submission by the student
  • Assignment grade - the grade of the student, this could be a percentage, a letter, or a number, depends on the points possible set in the assignment
  • Assignment comment - comments made by the teacher in the assignment. This is required for some reports such as milestone full term reports.

Message queues

There are subscriptions set in Canvas (Admin > Crimson Global Academy > Data Services) and these are currently connected to our message queues.

  • assignmentGroupEvent - when any assignment group is created or updated
  • assignmentEvent - when any assignment is created or updated
  • assignmentSubmissionEvent - when a submission gets created or updated, this would contain the grades as well
  • assignmentSubmissionCommentEvent - when a comment is created in a submission
  • assignmentSubmissionCommentSync - records on this queue is checked for any updates because Canvas does not give out live events on comment update so we add messages to this queue from a lambda function triggered on a schedule.

Lambda functions

These syncers are run on a scheduled basis see assignmentSyncer.tf. This is to handle events that are not handled by Canvas webhooks. This will do a clean up of deleted assignments groups, assignments, submissions, and comments. Also for assignment submission, this also picks up details that are not send by the webhook such as posted_at field.

  • syncAssignments - /assignments/sync/all - sync all assignment groups, assignments, submission, and grades
  • syncAssignmentGroup - /assignments/sync/group
  • syncAssignment - /assignments/sync
  • syncAssignmentSubmission - /assignments/sync/submission
  • updateSubmissionComment - /assignments/sync/submission/comment
  • syncSubmissionComment - /assignments/sync/submission/comment/new

Testing locally

There are available scripts for you to try. Check out package.json for more info. Enter command in your terminal npm run {{script}}.

Note:

  • npm run process_comments - will fetch submissions from your database and will get all comments in Canvas. The corresponding course, assignment, and submissions should be present in the Canvas environment you set up.