def edx_user_login(current_event, caliper_event):
    """
    Server emits this event when user attempts to login.

    :param current_event: default event log generated.
    :param caliper_event: caliper_event log having some basic attributes.
    :return: updated caliper_event.
    """
    caliper_object = {
        'id': settings.LMS_ROOT_URL,
        'type': 'SoftwareApplication',
        'extensions': current_event['event']
    }
    caliper_event.update({
        'action': 'LoggedIn',
        'type': 'SessionEvent',
        'object': caliper_object
    })
    caliper_event['referrer'].update({
        'type': 'WebPage'
    })
    username = current_event['event']['username']
    user_link = get_user_link_from_username(username)
    caliper_event['actor'].update({
        'id': user_link,
        'name': username,
        'type': 'Person'
    })
    caliper_event['extensions']['extra_fields'].update(current_event['context'])
    caliper_event['extensions']['extra_fields']['ip'] = current_event['ip']
    return caliper_event
Пример #2
0
def edx_team_learner_added(current_event, caliper_event):
    """
    When a user joins a team or is added by someone else,
    the server emits an edx.team.learner_added event.
    :param current_event: default event log generated.
    :param caliper_event: caliper_event log having some basic attributes.
    :return: updated caliper_event.
    """
    username = utils.get_username_from_user_id(
        current_event['event']['user_id'])

    user_link = utils.get_user_link_from_username(username)

    object_link = utils.get_team_url_from_team_id(
        current_event['referer'], current_event['event']['team_id'])

    caliper_object = {
        'id': object_link,
        'member': {
            'extensions': {
                'user_id': current_event['event']['user_id']
            },
            'id': user_link,
            'name': username,
            'type': 'Person'
        },
        'organization': {
            'extensions': {
                'team_id': current_event['event']['team_id']
            },
            'id': object_link,
            'type': 'Group'
        },
        'type': 'Membership',
        'extensions': {
            'add_method': current_event['event']['add_method']
        }
    }

    caliper_event.update({
        'type': 'Event',
        'action': 'Added',
        'object': caliper_object,
    })

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

    caliper_event['referrer'].update({'type': 'WebPage'})

    caliper_event['extensions']['extra_fields'].update({
        'ip':
        current_event['ip'],
        'course_id':
        current_event['context']['course_id'],
    })

    return caliper_event
Пример #3
0
def _add_actor_info(event, caliper_event):
    """
    Adds all generic information related to `actor`

    @param event: unprocessed event dict
    @param caliper_event: caliper event dict
    """
    caliper_event['actor'] = {}
    user_profile_link = utils.get_user_link_from_username(
        event.get('username'))
    caliper_event['actor'].update({
        'id': user_profile_link,
    })
Пример #4
0
def edx_team_learner_removed(current_event, caliper_event):
    """
    When a user leaves a team or is removed by someone else,
    the server emits an edx.team.learner_deleted event.

    This event is also triggered when a team is deleted,
    because all members are removed when a team is deleted.

    Course team members who have any of the Staff, Admin, Discussion Admin,
    Discussion Moderator, or Community TA roles can remove learners from teams.

    :param current_event: default event log generated.
    :param caliper_event: caliper_event log having some basic attributes.
    :return: updated caliper_event.
    """
    username = utils.get_username_from_user_id(
        current_event['event']['user_id'])

    user_link = utils.get_user_link_from_username(username)

    if current_event['event']['remove_method'] == 'team_deleted':
        object_link = current_event['referer']
    else:
        object_link = utils.get_team_url_from_team_id(
            current_event['referer'], current_event['event']['team_id'])

    caliper_object = {
        'id': object_link,
        'member': {
            'extensions': {
                'user_id': current_event['event']['user_id']
            },
            'id': user_link,
            'name': username,
            'type': 'Person'
        },
        'organization': {
            'extensions': {
                'team_id': current_event['event']['team_id']
            },
            'id': object_link,
            'type': 'Group'
        },
        'type': 'Membership',
        'extensions': {
            'remove_method': current_event['event']['remove_method']
        }
    }

    caliper_event.update({
        'type': 'Event',
        'action': 'Removed',
        'object': caliper_object,
    })

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

    caliper_event['referrer'].update({'type': 'WebPage'})

    caliper_event['extensions']['extra_fields'].update({
        'ip':
        current_event['ip'],
        'course_id':
        current_event['context']['course_id'],
    })

    return caliper_event
Пример #5
0
 def test_get_user_link_from_username_with_reverse_not_found_exception(
         self):
     formatted_link = utils.get_user_link_from_username('dummy')
     self.assertEquals('https://localhost:18000/u/dummy', formatted_link)
Пример #6
0
 def test_get_user_link_from_username_without_reverse_not_found_exception(
         self, reverse_mock):
     formatted_link = utils.get_user_link_from_username('dummy')
     reverse_mock.assert_called_with('learner_profile',
                                     kwargs={'username': '******'})
     self.assertEquals('https://localhost:18000/u/dummy', formatted_link)
Пример #7
0
def edx_cohort_user_add_requested(current_event, caliper_event):
    """
    When a course team member adds a student to a cohort on the Cohorts page of the instructor
    dashboard, the server emits an edx.cohort.user_add_requested event.

    :param current_event: default log
    :param caliper_event: log containing both basic and default attribute
    :return: final created log
    """

    username = utils.get_username_from_user_id(
        current_event['event']['user_id'])

    cohort_page_link = '{instructor_page}#view-cohort_management'.format(
        instructor_page=current_event['referer']
    )

    user_link = utils.get_user_link_from_username(username)

    caliper_object = {
        'id': cohort_page_link,
        'member': {
            'extensions': {
                'user_id': current_event['event']['user_id'],
                'previous_cohort_id': current_event['event']['previous_cohort_id'],
                'previous_cohort_name': current_event['event']['previous_cohort_name'],
            },
            'id': user_link,
            'name': username,
            'type': 'Person'
        },
        'organization': {
            'extensions': {
                'cohort_id': current_event['event']['cohort_id']
            },
            'id': cohort_page_link,
            'name': current_event['event']['cohort_name'],
            'type': 'Group'
        },
        'type': 'Membership'
    }

    caliper_event.update({
        'type': 'Event',
        'action': 'Added',
        'object': caliper_object,
    })

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

    caliper_event['referrer'].update({
        'type': 'WebPage'
    })

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

    return caliper_event