def edx_special_exam_timed_attempt_deleted(current_event, caliper_event):
    """
    The server emits this event when a course team or edX platform administrator
    removes an exam attempt record for an individual learner.

    :param current_event: default event log generated.
    :param caliper_event: caliper_event log having some basic attributes.
    :return: updated caliper_event.
    """
    caliper_event.update({
        'type': 'Event',
        'action': 'Deleted',
        'object': {
            'id': current_event['referer'],
            'type': 'Attempt',
        }
    })
    if current_event['event'].get('exam_name'):
        caliper_event['object']['name'] = current_event['event'].pop(
            'exam_name')

    if current_event['event'].get('attempt_started_at'):
        caliper_event['object']['startedAtTime'] = convert_datetime(
            current_event['event'].pop('attempt_started_at'))

    if current_event['event'].get('attempt_completed_at'):
        caliper_event['object']['endedAtTime'] = convert_datetime(
            current_event['event'].pop('attempt_completed_at'))

    caliper_event['object'].update({'extensions': current_event['event']})
    caliper_event['extensions']['extra_fields'].update({
        'course_id':
        current_event['context']['course_id'],
        'ip':
        current_event['ip']
    })
    caliper_event['actor'].update({
        'type': 'Person',
        'name': current_event['username']
    })
    caliper_event['referrer']['type'] = 'WebPage'
    return caliper_event
Ejemplo n.º 2
0
def openassessmentblock_create_submission(current_event, caliper_event):
    """
    The server emits this event when a learner submits a response.
    The same event is emitted when a learner submits a
    response for peer assessment or for self assessment.

    :param current_event: default event log generated.
    :param caliper_event: caliper_event log having some basic attributes.
    :return: updated caliper_event.
    """
    caliper_event.update({
        'type': 'AssessmentEvent',
        'action': 'Submitted',
        'object': {
            'id': current_event['referer'],
            'type': 'Assessment',
            'extensions': {
                'answer': current_event['event']['answer'],
                'attempt_number': current_event['event']['attempt_number'],
                'created_at': convert_datetime(
                    current_event['event']['created_at']),
                'submission_uuid': current_event['event']['submission_uuid'],
                'submitted_at': convert_datetime(
                    current_event['event']['submitted_at'])
            }
        }
    })
    caliper_event['extensions']['extra_fields'].update({
        'asides': current_event['context']['asides'],
        'course_id': current_event['context']['course_id'],
        'course_user_tags': current_event['context']['course_user_tags'],
        'module': current_event['context']['module']
    })
    caliper_event['actor'].update({
        'type': 'Person',
        'name': current_event['username']
    })
    caliper_event['referrer']['type'] = 'WebPage'
    caliper_event['extensions']['extra_fields']['ip'] = current_event['ip']
    caliper_event['extensions']['extra_fields'].pop('session')
    return caliper_event
Ejemplo n.º 3
0
def _add_generic_fields(event, caliper_event):
    """
    Adds all of the generic fields to the caliper_event object.

    @param event: unprocessed event dict
    @param caliper_event: caliper event dict
    """
    caliper_event.update({
        '@context': CALIPER_EVENT_CONTEXT,
        'id': uuid.uuid4().urn,
        'eventTime': utils.convert_datetime(event.get('time'))
    })
Ejemplo n.º 4
0
def openassessmentblock_peer_assess(current_event, caliper_event):
    """
    The server emits this event when a learner submits an assessment of
    peer's response.

    :param current_event: default event log generated.
    :param caliper_event: caliper_event log having some basic attributes.
    :return: updated caliper_event.
    """

    current_event_details = current_event['event']
    event_context_details = current_event['context']

    caliper_object = {
        'dateCreated': convert_datetime(
            current_event_details.pop('scored_at')),
        'extensions': current_event_details,
        'id': current_event['referer'],
        'type': 'Attempt'
    }

    caliper_event.update({
        'action': 'Graded',
        'type': 'GradeEvent',
        'object': caliper_object
    })

    caliper_event['actor'].update({
        'name': current_event['username'],
        'type': 'Person'
    })

    caliper_event['extensions']['extra_fields'].update({
        'asides': event_context_details['asides'],
        'course_user_tags': event_context_details['course_user_tags'],
        'course_id': event_context_details['course_id'],
        'module': event_context_details['module'],
        'ip': current_event['ip']
    })

    caliper_event['referrer']['type'] = 'WebPage'
    caliper_event['extensions']['extra_fields'].pop('session')

    return caliper_event
Ejemplo n.º 5
0
 def test_convert_date_time(self):
     self.assertEquals(
         '2018-10-16T14:23:24.785Z',
         utils.convert_datetime('2018-10-16T14:23:24.785148+00:00'))