11import logging
2+ from bson .objectid import ObjectId
23
34from flask import Blueprint , request , session , redirect , url_for
45
56from app .lti_session_passback .lti_module import utils
67from app .lti_session_passback .lti_module .check_request import check_request
7- from app .mongo_odm import ConsumersDBManager , SessionsDBManager , TasksDBManager
8- from app .utils import ALLOWED_EXTENSIONS , DEFAULT_EXTENSION
8+ from app .mongo_odm import ConsumersDBManager , PresentationFilesDBManager , SessionsDBManager , TasksDBManager
9+ from app .utils import ALLOWED_EXTENSIONS , DEFAULT_EXTENSION , check_argument_is_convertible_to_object_id
910
1011routes_lti = Blueprint ('routes_lti' , __name__ )
1112logger = logging .getLogger ('root_logger' )
@@ -38,6 +39,7 @@ def lti():
3839 attempt_count = int (custom_params .get ('attempt_count' , 1 ))
3940 required_points = float (custom_params .get ('required_points' , 0 ))
4041 criteria_pack_id = custom_params .get ('criteria_pack_id' , 'SimplePack' )
42+ presentation_id = custom_params .get ('presentation_id' )
4143 feedback_evaluator_id = int (custom_params .get ('feedback_evaluator_id' , 1 ))
4244 role = utils .get_role (params )
4345 params_for_passback = utils .extract_passback_params (params )
@@ -52,6 +54,11 @@ def lti():
5254 session ['feedback_evaluator_id' ] = feedback_evaluator_id
5355 session ['formats' ] = pres_formats
5456
55- TasksDBManager ().add_task_if_absent (task_id , task_description , attempt_count , required_points , criteria_pack_id )
57+ if presentation_id and not check_argument_is_convertible_to_object_id (presentation_id ):
58+ presentation_id = ObjectId (presentation_id )
59+ if not PresentationFilesDBManager ().get_presentation_file (presentation_id ):
60+ presentation_id = None
61+
62+ TasksDBManager ().add_task_if_absent (task_id , task_description , attempt_count , required_points , criteria_pack_id , presentation_id )
5663
5764 return redirect (url_for ('routes_trainings.view_training_greeting' ))
0 commit comments