예제 #1
0
    def test_get_discussion_id_map_from_cache_without_access(self):
        user = UserFactory.create()

        metadata = utils.get_cached_discussion_id_map(self.course, ["private_discussion_id"], self.user)
        self.assertEqual(metadata["private_discussion_id"]["title"], "Chapter 3 / Beta Testing")

        metadata = utils.get_cached_discussion_id_map(self.course, ["private_discussion_id"], user)
        self.assertEqual(metadata, {})
예제 #2
0
    def test_get_discussion_id_map_from_cache_without_access(self):
        user = UserFactory.create()

        metadata = utils.get_cached_discussion_id_map(self.course, 'private_discussion_id', self.user)
        self.assertEqual(metadata['private_discussion_id']['title'], 'Chapter 3 / Beta Testing')

        metadata = utils.get_cached_discussion_id_map(self.course, 'private_discussion_id', user)
        self.assertEqual(metadata, {})
예제 #3
0
    def test_get_discussion_id_map_from_cache_without_access(self):
        user = UserFactory.create()

        metadata = utils.get_cached_discussion_id_map(
            self.course, ['private_discussion_id'], self.user)
        self.assertEqual(metadata['private_discussion_id']['title'],
                         'Chapter 3 / Beta Testing')

        metadata = utils.get_cached_discussion_id_map(
            self.course, ['private_discussion_id'], user)
        self.assertEqual(metadata, {})
예제 #4
0
def track_forum_event(request, event_name, course, obj, data, id_map=None):
    """
    Send out an analytics event when a forum event happens. Works for threads,
    responses to threads, and comments on those responses.
    """
    user = request.user
    data['id'] = obj.id
    commentable_id = data['commentable_id']

    team = get_team(commentable_id)
    if team is not None:
        data.update(team_id=team.team_id)

    if id_map is None:
        id_map = get_cached_discussion_id_map(course, [commentable_id], user)
    if commentable_id in id_map:
        data['category_name'] = id_map[commentable_id]["title"]
        data['category_id'] = commentable_id
    data['url'] = request.META.get('HTTP_REFERER', '')
    data['user_forums_roles'] = [
        role.name for role in user.roles.filter(course_id=course.id)
    ]
    data['user_course_roles'] = [
        role.role for role in user.courseaccessrole_set.filter(course_id=course.id)
    ]

    eventtracking.tracker.emit(event_name, data)
예제 #5
0
def track_forum_event(request, event_name, course, obj, data, id_map=None):
    """
    Send out an analytics event when a forum event happens. Works for threads,
    responses to threads, and comments on those responses.
    """
    user = request.user
    data['id'] = obj.id
    commentable_id = data['commentable_id']

    if id_map is None:
        id_map = get_cached_discussion_id_map(course, [commentable_id], user)

    if commentable_id in id_map:
        data['category_name'] = id_map[commentable_id]["title"]
        data['category_id'] = commentable_id
    if len(obj.body) > TRACKING_MAX_FORUM_BODY:
        data['truncated'] = True
    else:
        data['truncated'] = False

    data['body'] = obj.body[:TRACKING_MAX_FORUM_BODY]
    data['url'] = request.META.get('HTTP_REFERER', '')
    data['user_forums_roles'] = [
        role.name for role in user.roles.filter(course_id=course.id)
    ]
    data['user_course_roles'] = [
        role.role
        for role in user.courseaccessrole_set.filter(course_id=course.id)
    ]

    tracker.emit(event_name, data)
예제 #6
0
def track_forum_event(request, event_name, course, obj, data, id_map=None):
    """
    Send out an analytics event when a forum event happens. Works for threads,
    responses to threads, and comments on those responses.
    """
    user = request.user
    data['id'] = obj.id
    commentable_id = data['commentable_id']

    team = get_team(commentable_id)
    if team is not None:
        data.update(team_id=team.team_id)

    if id_map is None:
        id_map = get_cached_discussion_id_map(course, [commentable_id], user)
    if commentable_id in id_map:
        data['category_name'] = id_map[commentable_id]["title"]
        data['category_id'] = commentable_id
    data['url'] = request.META.get('HTTP_REFERER', '')
    data['user_forums_roles'] = [
        role.name for role in user.roles.filter(course_id=course.id)
    ]
    data['user_course_roles'] = [
        role.role
        for role in user.courseaccessrole_set.filter(course_id=course.id)
    ]

    tracker.emit(event_name, data)
예제 #7
0
def track_forum_event(request, event_name, course, obj, data, id_map=None):
    """
    Send out an analytics event when a forum event happens. Works for threads,
    responses to threads, and comments on those responses.
    """
    user = request.user
    data['id'] = obj.id
    commentable_id = data['commentable_id']

    if id_map is None:
        id_map = get_cached_discussion_id_map(course, [commentable_id], user)

    if commentable_id in id_map:
        data['category_name'] = id_map[commentable_id]["title"]
        data['category_id'] = commentable_id
    if len(obj.body) > TRACKING_MAX_FORUM_BODY:
        data['truncated'] = True
    else:
        data['truncated'] = False

    data['body'] = obj.body[:TRACKING_MAX_FORUM_BODY]
    data['url'] = request.META.get('HTTP_REFERER', '')
    data['user_forums_roles'] = [
        role.name for role in user.roles.filter(course_id=course.id)
    ]
    data['user_course_roles'] = [
        role.role for role in user.courseaccessrole_set.filter(course_id=course.id)
    ]

    tracker.emit(event_name, data)
예제 #8
0
 def verify_discussion_metadata(self):
     """Retrieves the metadata for self.discussion and verifies that it is correct"""
     metadata = utils.get_cached_discussion_id_map(self.course,
                                                   'test_discussion_id',
                                                   self.user)
     metadata = metadata[self.discussion.discussion_id]
     self.assertEqual(metadata['location'], self.discussion.location)
     self.assertEqual(metadata['title'], 'Chapter / Discussion 1')
예제 #9
0
 def verify_discussion_metadata(self):
     """Retrieves the metadata for self.discussion and self.discussion2 and verifies that it is correct"""
     metadata = utils.get_cached_discussion_id_map(
         self.course, ["test_discussion_id", "test_discussion_id_2"], self.user
     )
     discussion1 = metadata[self.discussion.discussion_id]
     discussion2 = metadata[self.discussion2.discussion_id]
     self.assertEqual(discussion1["location"], self.discussion.location)
     self.assertEqual(discussion1["title"], "Chapter / Discussion 1")
     self.assertEqual(discussion2["location"], self.discussion2.location)
     self.assertEqual(discussion2["title"], "Chapter 2 / Discussion 2")
예제 #10
0
 def verify_discussion_metadata(self):
     """Retrieves the metadata for self.discussion and self.discussion2 and verifies that it is correct"""
     metadata = utils.get_cached_discussion_id_map(
         self.course,
         ['test_discussion_id', 'test_discussion_id_2'],
         self.user
     )
     discussion1 = metadata[self.discussion.discussion_id]
     discussion2 = metadata[self.discussion2.discussion_id]
     self.assertEqual(discussion1['location'], self.discussion.location)
     self.assertEqual(discussion1['title'], 'Chapter / Discussion 1')
     self.assertEqual(discussion2['location'], self.discussion2.location)
     self.assertEqual(discussion2['title'], 'Chapter 2 / Discussion 2')
예제 #11
0
 def test_get_bad_discussion_id(self):
     metadata = utils.get_cached_discussion_id_map(self.course, 'bad_discussion_id', self.user)
     self.assertEqual(metadata, {})
예제 #12
0
 def test_get_missing_discussion_id_map_from_cache(self):
     metadata = utils.get_cached_discussion_id_map(self.course, 'bogus_id', self.user)
     self.assertEqual(metadata, {})
예제 #13
0
 def test_get_bad_discussion_id(self):
     metadata = utils.get_cached_discussion_id_map(self.course,
                                                   'bad_discussion_id',
                                                   self.user)
     self.assertEqual(metadata, {})
예제 #14
0
 def test_get_missing_discussion_id_map_from_cache(self):
     metadata = utils.get_cached_discussion_id_map(self.course, 'bogus_id',
                                                   self.user)
     self.assertEqual(metadata, {})