JuezUN / INGInious

UNCode is an online platform for frequent practice and automatic evaluation of computer programming, Jupyter Notebooks and hardware description language (VHDL/Verilog) assignments. Also provides a pluggable interface with your existing LMS.
https://juezun.github.io
Other
9 stars 7 forks source link

LTI External grading tasks can send grades to LMS #521

Closed VirtualDiegox closed 1 year ago

VirtualDiegox commented 1 year ago

Description

Now when a submission is made externally, if the task is LTI and send_back_grade is true, the grade is sent to the LMS. The only condition for this is that the user must open the LTI task through the LMS before submit the task, in order to save the data to send the grade. Changes in client grader lib were made in order to give feedback if a user tries to do a submission without open the LTI task through the LMS

Type of change

How Has This Been Tested?

This was tested on my own development environment, doing submission externally and checking the task in a test course on Edunext platform

Checklist:

VirtualDiegox commented 1 year ago

Please check if the necessary parameters for sending back the grade to the LMS are already available using the session_lti_info()method from the object: user_manager.

An example of this usage can be found in the lti_outcome_manager.py file and the _before_submission_insertion method.

This was the first approach, but the problem is that the method session_lti_info() returns None if the session is not an LTI session, even if this is changed the session opened through the client grader library does not have the necessary parameters for sending back the grade to the LMS and the key is that the session opened through the client grader library and the session opened through the LMS are not the same, in this last case the parameters necessary for sending back the grade are saved in the session when is opened through the LMS, but when the user is conected through client grader, the session is a new one, so this session has not access to the information of the LTI session, that's why i thought in store the necessary parameters in a new collection.