示例#1
0
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)
示例#2
0
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)
示例#3
0
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'])
示例#4
0
 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)
     )
示例#5
0
    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