presnick / RunestoneServer

Interactive books for computer science
http://interactivepython.org
Other
26 stars 46 forks source link

Make Gradeable deep links into Runestone from Canvas #163

Closed presnick closed 6 years ago

presnick commented 6 years ago
  1. Add two columns to grades table in models/grouped_assignments.py a. lis_result_sourcedid # guid for the student x assignment cell in the Canvas gradebook b. lis_outcome_url # web service endpoint where you send signed xml messages to insert into gradebook; guid above will be one parameter you send in that xml; the actual grade and comment will be others

  2. Change controllers/lti.py to a. accept query parameters indicating deep link to the assignment page i. find (or insert) the assignment object ii. copy lis_result_source_did and lis_outcome_url into correct record (probably create it) of grades table. iii. redirect at end to the deep link

  3. When you save a grade, use the lis_outcome_url to send it to Canvas, appropriately signed; same key and secret currently used in lti.py for authentication (Get csev to help with this) -- Write a python modeled on the php function at https://github.com/tsugiproject/tsugi-php/blob/03972d765bd7a27b3b0c87ed9a931dde415e89fa/src/Util/LTI.php#L491 -- signing modeled on https://github.com/tsugiproject/tsugi-php/blob/03972d765bd7a27b3b0c87ed9a931dde415e89fa/src/Util/LTI.php#L387

  4. Construct the URLs in canvas inside the assignments tool. Submission type = External Tool. -- For example https://106w18.learningpython.today/runestone/lti?assignment_id=foo -- lis_result_source_did will be sent automatically, lis_outcome_url also.

presnick commented 6 years ago

1 and 2a done;

presnick commented 6 years ago

2 is done.

presnick commented 6 years ago

4 is tested. Instructor can get the value for foo by going to runestone/assignments/chooseAssignment.html and clicking on the assignment (after creating it in the instructor interface).