def publish_survey_concluded_xapi_statement(sender: Questionnaire): actor = get_current_user_as_actor() verb = XApiVerb(XApiVerbs.ConcludedSurvey) activity = get_xapi_object(sender) context = XApiSt3k101Context() receiver = get_xapi_object(sender) statement = XApiStatement(actor, verb, activity, xapi_context=context) XApiPublisher().enqueue([statement], receiver)
def do_submission_hooks(the_item: SurveyBase, submission_data: dict, actor: Party = None): assert not isinstance(the_item, Question) # no submission hooks for single questions hook_configuration = get_hook_configuration(the_item) if hook_configuration is None: return score = hook_configuration['scoring_strategy'].score_item(submission_data) actor = get_current_user_as_actor( ) if actor is None else get_party_as_actor(actor) verb = XApiVerb(XApiVerbs.Answered) activity = get_xapi_object(the_item) result = XApiScoredResult(score, hook_configuration['score_min'], hook_configuration['score_max'], 1) context = XApiSurveyContext(the_item) statement = XApiStatement(actor, verb, activity, result, context) questionnaire = get_questionnaire(the_item) XApiPublisher().enqueue_deferred([statement], get_xapi_target(the_item), questionnaire.id)
def publish_lti_launch_xapi_statement(sender: DataSubject, questionnaire=None): actor = get_party_as_actor(sender) verb = XApiVerb(XApiVerbs.Accessed) activity = get_xapi_object(questionnaire) context = XApiSt3k101Context() statement = XApiStatement(actor, verb, activity, xapi_context=context) XApiPublisher().enqueue([statement], g._config['XAPI_DEFAULT_ENDPOINT'])
def __init__(self, datasubject: DataSubject, question: Question, value: int): super(XApiAnswerSubmittedStatement, self).__init__( get_party_as_actor(datasubject), XApiVerb(XApiVerbs.Answered), get_xapi_object(question), xapi_context=XApiSurveyContext(question), xapi_result=XApiScoredResult(value, question.range_start, question.range_end, 1) )
def as_dict(self) -> dict: me = super(XApiSurveyContext, self).as_dict() context_activities = dict() from model.models.Dimension import Dimension from model.models.Question import Question if isinstance(self.__survey_base, Dimension): context_activities['parent'] = [ get_xapi_object(self.__survey_base.questionnaire).as_dict() ] elif isinstance(self.__survey_base, Question): context_activities['parent'] = [ get_xapi_object(self.__survey_base.dimension).as_dict() ] context_activities['grouping'] = [ get_xapi_object( self.__survey_base.dimension.questionnaire).as_dict() ] if context_activities: me['contextActivities'] = context_activities return me