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')
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
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()
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()