Example #1
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)
Example #2
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'])
Example #3
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)
     )
Example #4
0
def publish_questionnaire_retracted_xapi_statement(sender: Questionnaire):
    actor = get_current_user_as_actor()
    verb = XApiVerb(XApiVerbs.RetractedSurvey)
    activity = get_xapi_object(sender)
    context = XApiSt3k101Context()

    receiver = get_xapi_target(sender)
    statement = XApiStatement(actor, verb, activity, xapi_context=context)
    XApiPublisher().enqueue([statement], receiver)
 def __init__(self, party: Party):
     super(XApiLoggedInStatement, self).__init__(
         get_party_as_actor(party),
         XApiVerb(XApiVerbs.LoggedIn),
         XApiActivityObject(
             XApiActivities.Login,
             "{}/#/private".format(g._config['DOMAIN_NAME']),  # TODO: replace hard coded url with something more useful
             {
                 "en-US": "St3k101 login view"
             }
         ),
         xapi_context=XApiSt3k101Context()
     )
Example #6
0
def publish_reference_id_updated_xapi_statement(sender: SurveyBase,
                                                previous_value: str = "Missing"
                                                ):
    actor = get_current_user_as_actor()
    verb = XApiVerb(XApiVerbs.ChangedReferenceId)
    activity = None
    if isinstance(sender, Question):
        activity = XApiActivities.Question
    elif isinstance(sender, Dimension):
        activity = XApiActivities.Dimension
    elif isinstance(sender, Questionnaire):
        activity = XApiActivities.Questionnaire
    assert activity is not None
    previous_value = "<{}>:{}".format(sender.owning_dataclient.email,
                                      previous_value)
    activity = XApiActivityObject(activity, previous_value,
                                  sender.name_translations)
    result = XApiResponseResult("<{}>:{}".format(
        sender.owning_dataclient.email, sender.reference_id))
    context = XApiSt3k101Context()

    receiver = get_xapi_target(sender)
    statement = XApiStatement(actor, verb, activity, result, context)
    XApiPublisher().enqueue([statement], receiver)
Example #7
0
 def __init__(self, statement_id: UUID):
     super(XApiVoidStatement,
           self).__init__(get_current_user_as_actor(),
                          XApiVerb(XApiVerbs.Voided),
                          XApiStatementRefObject(statement_id=statement_id),
                          xapi_context=XApiSt3k101Context())