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
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
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).
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
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
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
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.