Example #1
0
    def get_paginated_response(self, data):
        """Add number of unread comments to links.meta when viewing list of comments filtered by
        a target node, file or wiki page."""
        response = super(CommentPagination, self).get_paginated_response(data)
        response_dict = response.data
        kwargs = self.request.parser_context['kwargs'].copy()

        if self.request.query_params.get('related_counts', False):
            target_id = self.request.query_params.get('filter[target]', None)
            node_id = kwargs.get('node_id', None)
            node = Node.load(node_id)
            user = self.request.user
            if target_id and not user.is_anonymous() and node.is_contributor(user):
                root_target = Guid.load(target_id)
                if root_target:
                    page = getattr(root_target.referent, 'root_target_page', None)
                    if page:
                        if not len(data):
                            unread = 0
                        else:
                            unread = Comment.find_n_unread(user=user, node=node, page=page, root_id=target_id)
                        if self.request.version < '2.1':
                            response_dict['links']['meta']['unread'] = unread
                        else:
                            response_dict['meta']['unread'] = unread
        return Response(response_dict)
Example #2
0
    def get_paginated_response(self, data):
        """Add number of unread comments to links.meta when viewing list of comments filtered by
        a target node, file or wiki page."""
        response = super(CommentPagination, self).get_paginated_response(data)
        response_dict = response.data
        kwargs = self.request.parser_context['kwargs'].copy()

        if self.request.query_params.get('related_counts', False):
            target_id = self.request.query_params.get('filter[target]', None)
            node_id = kwargs.get('node_id', None)
            node = Node.load(node_id)
            user = self.request.user
            if target_id and not user.is_anonymous() and node.is_contributor(
                    user):
                root_target = Guid.load(target_id)
                if root_target:
                    page = getattr(root_target.referent, 'root_target_page',
                                   None)
                    if page:
                        if not len(data):
                            unread = 0
                        else:
                            unread = Comment.find_n_unread(user=user,
                                                           node=node,
                                                           page=page,
                                                           root_id=target_id)
                        response_dict['links']['meta']['unread'] = unread
        return Response(response_dict)
Example #3
0
 def get_unread_comments_count(self, obj):
     user = self.context['request'].user
     if user.is_anonymous:
         return 0
     return Comment.find_n_unread(user=user,
                                  node=obj.node,
                                  page='files',
                                  root_id=obj.get_guid()._id)
Example #4
0
 def test_find_unread_does_not_include_deleted_comments(self):
     project = ProjectFactory()
     user = AuthUserFactory()
     project.add_contributor(user)
     project.save()
     comment = CommentFactory(node=project, user=project.creator, is_deleted=True)
     n_unread = Comment.find_n_unread(user=user, node=project)
     assert_equal(n_unread, 0)
Example #5
0
 def test_find_unread_new_comments(self):
     project = ProjectFactory()
     user = UserFactory()
     project.add_contributor(user)
     project.save()
     comment = CommentFactory(node=project, user=project.creator)
     n_unread = Comment.find_n_unread(user=user, node=project)
     assert_equal(n_unread, 1)
Example #6
0
 def test_find_unread_new_comments(self):
     project = ProjectFactory()
     user = UserFactory()
     project.add_contributor(user)
     project.save()
     comment = CommentFactory(node=project, user=project.creator)
     n_unread = Comment.find_n_unread(user=user, node=project)
     assert_equal(n_unread, 1)
Example #7
0
 def test_find_unread_does_not_include_deleted_comments(self):
     project = ProjectFactory()
     user = AuthUserFactory()
     project.add_contributor(user)
     project.save()
     comment = CommentFactory(node=project, user=project.creator, is_deleted=True)
     n_unread = Comment.find_n_unread(user=user, node=project, page='node')
     assert_equal(n_unread, 0)
Example #8
0
 def test_find_unread_includes_comment_replies(self):
     project = ProjectFactory()
     user = UserFactory()
     project.add_contributor(user)
     project.save()
     comment = CommentFactory(node=project, user=user)
     reply = CommentFactory(node=project, target=comment, user=project.creator)
     n_unread = Comment.find_n_unread(user=user, node=project)
     assert_equal(n_unread, 1)
Example #9
0
    def test_find_unread_includes_edited_comments(self):
        project = ProjectFactory()
        user = AuthUserFactory()
        project.add_contributor(user)
        project.save()
        comment = CommentFactory(node=project, user=project.creator)

        url = project.api_url_for('update_comments_timestamp')
        payload = {'page': 'node', 'rootId': project._id}
        res = self.app.put_json(url, payload, auth=user.auth)
        user.reload()
        n_unread = Comment.find_n_unread(user=user, node=project)
        assert_equal(n_unread, 0)

        # Edit previously read comment
        comment.edit(auth=Auth(project.creator), content='edited', save=True)
        n_unread = Comment.find_n_unread(user=user, node=project)
        assert_equal(n_unread, 1)
Example #10
0
 def test_find_unread_includes_comment_replies(self):
     project = ProjectFactory()
     user = UserFactory()
     project.add_contributor(user)
     project.save()
     comment = CommentFactory(node=project, user=user)
     reply = CommentFactory(node=project, target=Guid.load(comment._id), user=project.creator)
     n_unread = Comment.find_n_unread(user=user, node=project, page='node')
     assert_equal(n_unread, 1)
Example #11
0
    def test_find_unread_includes_edited_comments(self):
        project = ProjectFactory()
        user = AuthUserFactory()
        project.add_contributor(user)
        project.save()
        comment = CommentFactory(node=project, user=project.creator)

        url = project.api_url_for("update_comments_timestamp")
        payload = {"page": "node", "rootId": project._id}
        res = self.app.put_json(url, payload, auth=user.auth)
        user.reload()
        n_unread = Comment.find_n_unread(user=user, node=project, page="node")
        assert_equal(n_unread, 0)

        # Edit previously read comment
        comment.edit(auth=Auth(project.creator), content="edited", save=True)
        n_unread = Comment.find_n_unread(user=user, node=project, page="node")
        assert_equal(n_unread, 1)
Example #12
0
    def get_paginated_response(self, data):
        """Add number of unread comments to links.meta when viewing list of comments filtered by
        a target node, file or wiki page."""
        response = super(CommentPagination, self).get_paginated_response(data)
        response_dict = response.data
        kwargs = self.request.parser_context["kwargs"].copy()

        if self.request.query_params.get("related_counts", False):
            target_id = self.request.query_params.get("filter[target]", None)
            node_id = kwargs.get("node_id", None)
            node = Node.load(node_id)
            user = self.request.user
            if target_id and not user.is_anonymous() and node.is_contributor(user):
                root_target = Guid.load(target_id)
                page = getattr(root_target.referent, "root_target_page", None)
                if page:
                    if not len(data):
                        unread = 0
                    else:
                        unread = Comment.find_n_unread(user=user, node=node, page=page, root_id=target_id)
                    response_dict["links"]["meta"]["unread"] = unread
        return Response(response_dict)
Example #13
0
 def get_unread_comments_count(self, obj):
     user = self.context["request"].user
     if user.is_anonymous():
         return 0
     return Comment.find_n_unread(user=user, node=obj.node, page="files", root_id=obj.get_guid()._id)
Example #14
0
 def get_unread_comments_count(self, obj):
     user = self.context['request'].user
     if user.is_anonymous():
         return 0
     return Comment.find_n_unread(user=user, node=obj.node, page='files', root_id=obj._id)
Example #15
0
 def test_find_unread_is_zero_when_no_comments(self):
     n_unread = Comment.find_n_unread(user=UserFactory(), node=ProjectFactory())
     assert_equal(n_unread, 0)
Example #16
0
 def test_find_unread_is_zero_when_no_comments(self):
     n_unread = Comment.find_n_unread(user=UserFactory(),
                                      node=ProjectFactory())
     assert_equal(n_unread, 0)