Exemple #1
0
    def test_saving_and_retrieving_comment(self):
        second_post = Post.objects.create(
            board=self.default_board,
            title='some post title',
            content='some post content'
        )

        first_comment = Comment()
        first_comment.post = self.default_post
        first_comment.content = 'This is a first comment'
        first_comment.account = self.user
        first_comment.ip = '127.0.0.1'
        first_comment.save()

        second_comment = Comment()
        second_comment.post = second_post
        second_comment.content = 'This is a second comment'
        second_comment.account = self.user
        second_comment.ip = '127.0.0.1'
        second_comment.save()

        saved_comments = Comment.objects.all()
        self.assertEqual(saved_comments.count(), 2)

        saved_comments_on_default_post = Comment.objects.filter(post=self.default_post)
        saved_comments_on_second_post = Comment.objects.filter(post=second_post)
        self.assertEqual(saved_comments_on_default_post.count(), 1)
        self.assertEqual(saved_comments_on_second_post.count(), 1)

        first_saved_comment = saved_comments[0]
        second_saved_comment = saved_comments[1]
        self.assertEqual(first_saved_comment.content, 'This is a first comment')
        self.assertEqual(second_saved_comment.content, 'This is a second comment')
Exemple #2
0
def board_send_comment(request, post_id):
        chat = Chat.objects.all()
        user_name = request.session['userss']
        user_id = request.session['user_id']
        print("Comment 들어왔다")
        post = get_object_or_404(Post, pk=post_id)
        comment = Comment(comment=post)
        # comment = Comment(pk=post_id)

        comment_list = Comment.objects.filter(comment=post_id).order_by('-created_date')
        # print(comment_list)
        post_form = PostForm(request.POST, instance=post)


        if request.method == "POST":
            print("post 들어왔다 ")
            form = CommentForm(request.POST, instance=comment)

            if form.is_valid():
                comment = form.save(commit=False)
                comment.post = post
                comment.author = user_name
                comment.save()
                page = request.GET.get('page', '1')
                paginator = Paginator(comment_list, 5)
                print("page")
                commentpage = paginator.get_page(page)
                context = {'comment_list': comment_list,'post_form': post_form, 'post': post, 'comment_form': form, 'page': page, 'commentpage': commentpage, 'userss': user_name, 'user_id': user_id}

                return render(request, 'bbs_detail.html',context)


        else:
            form = CommentForm(request.GET)
            page = request.GET.get('page','1')
            paginator = Paginator(comment_list, 5)
            commentpage = paginator.get_page(page)

            context = {'comment_list': comment_list,'post_form': post_form, 'post': post, 'comment_form': form, 'page': page, 'commentpage': commentpage, 'userss': user_name, 'user_id': user_id, 'chat': chat}


            if form.is_valid():
                comment = form.save(commit=False)
                comment.post = post
                comment.author = user_name
                comment.save()
                page = request.GET.get('page', '1')
                paginator = Paginator(comment_list, 5)
                commentpage = paginator.get_page(page)

                context = {'comment_list': comment_list,'post_form': post_form, 'post': post, 'comment_form': form, 'page': page, 'commentpage': commentpage, 'userss': user_name, 'user_id': user_id, 'chat': chat}

                return render(request, 'bbs_detail.html', context)

        print("pComment 그린다 ")
        return render(request, 'bbs_detail.html', context)
    def setUpTestData(cls):
        # create user
        user = User.objects.create(name=name, email=email, password=password)

        # get token when login
        request = RequestFactory().post('/login/',
                                        data=json.dumps({
                                            'email': email,
                                            'password': password
                                        }),
                                        content_type='application/json')
        global token
        token = json.loads(login(request=request).content)['token']

        # create a post
        post = Post()
        post.author = user
        post.content = "測試用的發文"
        post.save()

        # get post_id
        for post_item in Post.objects.filter(content="測試用的發文"):
            global post_id
            post_id = post_item.id

        # create a comment
        comment = Comment()
        comment.post = post
        comment.author = user
        comment.content = "對測試發文留言哦"
        comment.save()

        # get comment_id
        for comment_item in Comment.objects.filter(content='對測試發文留言哦'):
            global comment_id
            comment_id = comment_item.id
Exemple #4
0
    def post(self, request, *args, **kwargs):
        if Block.is_blocked(request.META['REMOTE_ADDR']):
            return JsonResponse({'status': 'no_permission'}, status=403)

        target_type = request.POST.get('type')
        contents = request.POST.get('contents')

        c = Comment()
        ndata = treedict()

        if target_type == 'p':
            try:
                c.post = Post.objects.get(pk=self.pk)
                to_user = c.post.user
                ndata['type'] = 'COMMENT_ON_POST'
                ndata['message'] = _('Comment on "%(post)s"') % {'post': truncate_chars(c.post.title, 12)}
            except Post.DoesNotExist:
                return self.not_found()
        elif target_type == 'c':
            try:
                c.comment = Comment.objects.get(pk=self.pk)
                c.post = c.comment.post
                if c.depth > settings.BOARD_COMMENT_MAX_DEPTH:
                    return self.bad_request()
                to_user = c.comment.user
                ndata['type'] = 'COMMENT_ON_COMMENT'
                ndata['message'] = _('Comment on your comment of "%(post)s"') % {'post': truncate_chars(c.post.title, 8)}
            except Comment.DoesNotExist:
                return self.not_found()
        else:
            return self.bad_request()

        if is_empty_html(contents):
            return JsonResponse({'status': 'badrequest', 'error_fields': ['contents']}, status=400)

        if request.user.is_authenticated():
            c.user = request.user
            from_user = request.user
        else:
            ot_user = OneTimeUser()
            ot_user.nick = request.POST.get('ot_nick')
            ot_user.password = request.POST.get('ot_password')
            request.session['onetime_user'] = {'nick': ot_user.nick, 'password': ot_user.password}
            try:
                ot_user.full_clean()
            except ValidationError as ex:
                return JsonResponse({'status': 'badrequest', 'error_fields': list(ex.message_dict.keys())}, status=400)
            else:
                ot_user.password = make_password(ot_user.password)
                ot_user.save()
                c.onetime_user = ot_user
                from_user = ot_user

        c.ipaddress = request.META['REMOTE_ADDR']
        c.contents = contents

        f = Filter.is_trigger(c)
        if f:
            return JsonResponse({'status': 'filtered', 'filter': f.id}, status=400)

        c.save()

        if (to_user is not None) and (from_user != to_user):
            ndata['url'] = c.get_absolute_url()
            cleaned_text = replace_tags_to_text(c.contents)
            ndata['text'] = truncate_chars(cleaned_text, 50)
            Notification.create(from_user, to_user, ndata)

        qdict = QueryDict('', mutable=True)
        qdict.update({
            'type': 'c',
            'target': str(c.id),
            'vote': '++',
        })
        r = request
        r.POST = qdict
        v = VoteAjaxView()
        v.post(r)

        return self.success()
Exemple #5
0
    def post(self, request, *args, **kwargs):
        if Block.is_blocked(request.META['REMOTE_ADDR']):
            return JsonResponse({'status': 'no_permission'}, status=403)

        target_type = request.POST.get('type')
        contents = request.POST.get('contents')

        c = Comment()
        ndata = treedict()

        if target_type == 'p':
            try:
                c.post = Post.objects.get(pk=self.pk)
                to_user = c.post.user
                ndata['type'] = 'COMMENT_ON_POST'
                ndata['message'] = _('Comment on "%(post)s"') % {'post': truncate_chars(c.post.title, 12)}
            except Post.DoesNotExist:
                return self.not_found()
        elif target_type == 'c':
            try:
                c.comment = Comment.objects.get(pk=self.pk)
                c.post = c.comment.post
                if c.depth > settings.BOARD_COMMENT_MAX_DEPTH:
                    return self.bad_request()
                to_user = c.comment.user
                ndata['type'] = 'COMMENT_ON_COMMENT'
                ndata['message'] = _('Comment on your comment of "%(post)s"') % {'post': truncate_chars(c.post.title, 8)}
            except Comment.DoesNotExist:
                return self.not_found()
        else:
            return self.bad_request()

        if is_empty_html(contents):
            return JsonResponse({'status': 'badrequest', 'error_fields': ['contents']}, status=400)

        if request.user.is_authenticated():
            c.user = request.user
            from_user = request.user
        else:
            ot_user = OneTimeUser()
            ot_user.nick = request.POST.get('ot_nick')
            ot_user.password = request.POST.get('ot_password')
            request.session['onetime_user'] = {'nick': ot_user.nick, 'password': ot_user.password}
            try:
                ot_user.full_clean()
            except ValidationError as ex:
                return JsonResponse({'status': 'badrequest', 'error_fields': list(ex.message_dict.keys())}, status=400)
            else:
                ot_user.password = make_password(ot_user.password)
                ot_user.save()
                c.onetime_user = ot_user
                from_user = ot_user

        c.ipaddress = request.META['REMOTE_ADDR']
        c.contents = contents
        c.save()

        if (to_user is not None) and (from_user != to_user):
            ndata['url'] = c.get_absolute_url()
            cleaned_text = replace_tags_to_text(c.contents)
            ndata['text'] = truncate_chars(cleaned_text, 50)
            Notification.create(from_user, to_user, ndata)

        qdict = QueryDict('', mutable=True)
        qdict.update({
            'type': 'c',
            'target': str(c.id),
            'vote': '++',
        })
        r = request
        r.POST = qdict
        v = VoteAjaxView()
        v.post(r)

        return self.success()