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
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
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, })
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
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)
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)
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