def update_discussion_comments_core(session,
                                    comment_id,
                                    member,
                                    content,
                                    log=regular_log.default()):
    """
        Updates a comment. At this point we assume data has been validated so no extra checks are
        done to the input data. Only check is for permissions of edition. We do not allow editing
        comments of another user other than the one that has created the original comment.
    :param session:
    :param log:
    :param member:
    :param project:
    :param discussion:
    :param content:
    :return:
    """
    comment = DiscussionComment.get_by_id(session=session, id=comment_id)
    if member.id != comment.member_created_id:
        log['error'][
            'member'] = 'Member cannot update the comment authored by another member. (Permission denied).'
        return None, log

    comment = DiscussionComment.update(session=session,
                                       content=content,
                                       member=member,
                                       comment_id=comment_id)

    comment_data = comment.serialize()
    return comment_data, log
Esempio n. 2
0
def new_discussion_comment_core(session,
                                member,
                                user,
                                project,
                                discussion,
                                content,
                                log=regular_log.default()):
    """
        Creates a new comment. At this point we assume data has been validated so no extra checks are
        done to the input data.
    :param session:
    :param log:
    :param member:
    :param project:
    :param discussion:
    :param content:
    :return:
    """
    comment = DiscussionComment.new(session=session,
                                    content=content,
                                    member_created_id=member.id,
                                    project_id=project.id,
                                    user_id=user.id if user else None,
                                    member_updated_id=member.id,
                                    discussion_id=discussion.id)

    comment_data = comment.serialize()
    return comment_data, log
Esempio n. 3
0
 def test_list(self):
     # Create mock issue
     discussion = data_mocking.create_discussion(
         {
             'project_id': self.project.id,
             'name': 'test',
             'title': 'test',
         },
         self.session,
     )
     comment1 = data_mocking.create_discussion_comment(
         {
             'discussion_id': discussion.id,
             'project_id': self.project.id,
             'user_id': self.project_data['users'][0].id,
             'content': 'test'
         }, self.session)
     comment2 = data_mocking.create_discussion_comment(
         {
             'discussion_id': discussion.id,
             'project_id': self.project.id,
             'user_id': self.project_data['users'][0].id,
             'content': 'test2'
         }, self.session)
     comments = DiscussionComment.list(session=self.session,
                                       project_id=self.project.id,
                                       discussion_id=discussion.id)
     self.assertIsNotNone(comments)
     self.assertEqual(len(comments), 2)
     ids = [comment.id for comment in comments]
     self.assertTrue(comment1.id in ids)
     self.assertTrue(comment2.id in ids)
Esempio n. 4
0
def create_discussion_comment(discussion_comment_data, session):
    issue_comment = DiscussionComment(
        discussion_id=discussion_comment_data.get('discussion_id'),
        user_id=discussion_comment_data.get('user_id'),
        member_created_id=discussion_comment_data.get('member_created_id'),
        project_id=discussion_comment_data.get('project_id'),
        content=discussion_comment_data.get('content'),
    )
    session.add(issue_comment)
    regular_methods.commit_with_rollback(session)
    return issue_comment
Esempio n. 5
0
 def test_new(self):
     # Create mock issue
     discussion = data_mocking.create_discussion(
         {
             'project_id': self.project.id,
             'name': 'test',
             'title': 'test',
         },
         self.session,
     )
     content = 'thecontent'
     issue_comment = DiscussionComment.new(session=self.session,
                                           content=content,
                                           discussion_id=discussion.id)
     self.assertIsNotNone(issue_comment)
     self.assertEqual(issue_comment.content, content)
     self.assertEqual(issue_comment.discussion_id, discussion.id)
Esempio n. 6
0
    def test_get_by_id(self):
        # Create mock issue
        discussion = data_mocking.create_discussion(
            {
                'project_id': self.project.id,
                'name': 'test',
                'title': 'test',
            },
            self.session,
        )
        issue_comment = data_mocking.create_discussion_comment(
            {
                'discussion_id': discussion.id,
                'user_id': self.project_data['users'][0].id,
                'content': 'test'
            }, self.session)

        issue_comment2 = DiscussionComment.get_by_id(self.session,
                                                     issue_comment.id)
        self.assertEqual(issue_comment, issue_comment2)
Esempio n. 7
0
def list_discussion_comments_core(session,
                                  project,
                                  discussion,
                                  log=regular_log.default()):
    """
        List comments of the discussion. At this point we assume data has been validated so no extra checks are
        done to the input data.
    :param session:
    :param log:
    :param member:
    :param project:
    :param discussion:
    :param content:
    :return:
    """
    comments = DiscussionComment.list(session=session,
                                      project_id=project.id,
                                      discussion_id=discussion.id)

    comment_data = [comment.serialize() for comment in comments]
    return comment_data, log
Esempio n. 8
0
    def test_update(self):
        # Create mock issue
        discussion = data_mocking.create_discussion(
            {
                'project_id': self.project.id,
                'name': 'test',
                'title': 'test',
            },
            self.session,
        )
        comment1 = data_mocking.create_discussion_comment(
            {
                'discussion_id': discussion.id,
                'user_id': self.project_data['users'][0].id,
                'content': 'test'
            }, self.session)

        new_content = 'new_content'
        comment = DiscussionComment.update(session=self.session,
                                           comment_id=comment1.id,
                                           member=None,
                                           content=new_content)
        self.assertIsNotNone(comment)
        self.assertEqual(comment.content, new_content)