예제 #1
0
파일: views.py 프로젝트: Tecter/Django_blog
def get_detail(request, blog_id):
    try:
        blog = models.Blog.objects.get(id=blog_id)
    except Blog.DoesNotExist:
        raise Http404

    if request.method == 'GET':
        # 加载评论表单
        form = forms.CommentForm()
    else:
        # 评论提交的数据
        form = forms.CommentForm(request.POST)
        if form.is_valid():
            cleaned_data = form.cleaned_data
            cleaned_data['blog'] = blog
            models.Comment.objects.create(**cleaned_data)

            form = forms.CommentForm()

    ctx = {
        'blog': blog,
        'comments': blog.comment_set.all().order_by('-created'),
        'form': form
    }

    return render(request, 'blog-detail.html', ctx)
예제 #2
0
def view_post(request, pk):
    post = get_object_or_404(models.Post, pk=pk)
    context = {'post': post}
    comment_form = forms.CommentForm()
    if request.user.is_authenticated:
        comment_form.initial = {
            'full_name': request.user.get_full_name(),
            'email': request.user.email
        }
    if request.method == 'POST':
        comment_form = forms.CommentForm(request.POST)
        if comment_form.is_valid():
            models.Comment.objects.create(
                full_name=comment_form.cleaned_data.get('full_name'),
                email=comment_form.cleaned_data.get('email'),
                text=comment_form.cleaned_data.get('text'),
                post=post,
            )
            messages.success(request,
                             'نظر شما پس از تایید قابل مشاهده خواهد بود.')
            return redirect(reverse('view_post', kwargs={'pk': pk}))
        else:
            messages.error(request, 'لطفاً اشکالات فرم را برطرف کنید.')
    context['comment_form'] = comment_form
    return render(request, 'post.html', context)
예제 #3
0
def addCommentToPost(request, pk):
    post = get_object_or_404(models.Post, pk=pk)
    if request.method == 'POST':
        form = forms.CommentForm(request.POST)
        if form.is_valid():
            comment = form.save(commit=False)
            comment.post = post
            comment.save()
            return redirect('postDetailView', pk=pk)
    else:
        form = forms.CommentForm()
    return render(request, 'blog/post_detail.html', {'form': form})
예제 #4
0
def add_comment_to_post(request, pk):

    post = get_object_or_404(models.Post, pk=pk)

    if request.method == 'POST':
        form = forms.CommentForm(request.POST)
        if form.is_valid():
            comment = form.save(commit=False)
            comment.post = post
            comment.save()
            return redirect('post_detail', pk=post.pk)  # try only pk no change
    else:
        form = forms.CommentForm()
    return render(request, 'blog/comment_form.html', {'form': form})
예제 #5
0
def post_comment(request, post_pk):
    """
    This function to be used if you want to post comment and then rel-
    -oad page immediately and show the new comment
    """
    post = get_object_or_404(models.Post, pk=post_pk)
    form = forms.CommentForm()
    if request.method == 'POST':
        form = forms.CommentForm(request.POST)
        if form.is_valid():
            comment = form.save(commit=False)
            comment.post = post
            comment.save()

    return HttpResponseRedirect(post.get_absolute_url())
예제 #6
0
def comment_update(request, *args, **kwargs):
    comment = get_object_or_404(models.Comment, pk=kwargs['comment_id'])
    if not common.has_perm(request,
                           constants.PERMISSION_COMMENT_EDIT,
                           post=comment.post,
                           author=kwargs['author']):
        raise PermissionDenied
    form = forms.CommentForm(request.POST or None)
    status = form['status'].data
    if not status:
        return JsonResponse({
            'status': 11,
            'message': _('Input Error'),
        })
    comment.status = int(status)
    comment.save()

    logging.getLogger(constants.OPERATION_LOG).info({
        'post': comment.post.id,
        'comment': comment.id
    })
    return JsonResponse({
        'status': 1,
        'data': {
            'status': comment.status,
            'status_name': str(models.CommentStatus(comment.status))
        },
        'message': _('COMMENT_UPDATED'),
    })


# codeend:comment_update
예제 #7
0
    def post(self, request, *args, **kwargs):
        parent = self.get_object()

        if request.POST.get('like'):
            # ADD/REMOVE LIKE
            assert False, "LIKE"
        else:
            # ADD COMMENT
            form = forms.CommentForm(request.POST)
            if not form.is_valid():
                return JsonResponse(
                    {
                        'errors': json.loads(form.errors.as_json()),
                    },
                    status=400)
            form.instance.post = parent
            form.instance.user = request.user
            form.save()
            if request.is_ajax():
                # return JsonResponse({'status': 'ok'})
                return render(request, "blog/_comment.html", {
                    'comment': form.instance,
                })
            messages.success(request, "Comments saved.")
            return redirect(parent)
예제 #8
0
 def get_context_data(self, **kwargs):
     context = super().get_context_data(**kwargs)
     dict = {
         'form': forms.CommentForm(),
     }
     context.update(dict)
     return context
예제 #9
0
def AddCommentView(request):
    #判断登录者身份
    if request.method == "POST":
        comment_form = forms.CommentForm(request.POST)
        a={}
        if comment_form.is_valid():
            id = comment_form.cleaned_data['blog']
            # print(id,type(id),id.id)
            name = comment_form.cleaned_data['name']
            con = request.POST.get('content')
            content = con.replace("\r\n", "<br/>")
            new_comment = models.Comment()
            new_comment.name = name
            new_comment.content = content
            new_comment.blog_id = id.id
            new_comment.save()

            # comment_form.save()
            a['status'] = 'success'
            a["comments"] = serializers.serialize("json", models.Comment.objects.filter(blog_id=id))
            a["comments_count"] = models.Comment.objects.filter(blog_id=id).count()
            return JsonResponse(a)
            # return HttpResponse('%s'%a, content_type='application/json')
        else:
            mes="检查用户名、内容是否符合要求:不得为空、字数不得超出限制"
            a['status'] = 'false'
            a['message'] = mes
            return JsonResponse(a)
예제 #10
0
def reply(request, *args, **kwargs):
    parent = get_object_or_404(models.Comment, pk=kwargs['comment_id'])

    if not common.has_perm(request,
                           constants.PERMISSION_COMMENT_REPLY,
                           post=parent,
                           author=kwargs['author']):
        raise PermissionDenied

    form = forms.CommentForm(request.POST or None)
    if not form.is_valid():
        return JsonResponse({
            'status': 11,
            'message': _('Input Error'),
        })

    comment = form.save(commit=False)
    comment.post = parent.post
    comment.parent = parent
    comment.client_text = get_client_ip(request)[0]
    comment.save()

    logging.getLogger(constants.OPERATION_LOG).info({
        'post': parent.post.id,
        'parent': parent.id
    })
    return JsonResponse({
        'status': 1,
        'message': _('REPLY_REGISTERED'),
    })
예제 #11
0
def detail(request, id):
    try:
        model = models.Post.objects.get(id=id)
    except Exception:
        raise Http404()
    if request.method == 'POST':
        form = forms.CommentForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('blog-detail', id=id)
    else:
        form = forms.CommentForm(initial={'post': model})
    return render(request, 'blog/detail.html', {
        'title': model.title,
        'model': model,
        'form': form
    })
예제 #12
0
def add_comment_to_post(request, pk):
    post = get_object_or_404(models.Post, pk=pk)

    if request.method == 'POST':
        form = forms.CommentForm(request.POST)

        if form.is_valid():
            comment = form.save(commit=False)
            comment.post = post
            comment.save()

            return redirect(reverse('blog:post_detail', kwargs={'pk':
                                                                post.pk}))

    else:
        form = forms.CommentForm()

    return render(request, 'blog/comment_form.html', {'form': form})
예제 #13
0
 def get_context_data(self, **kwargs):
     context = super().get_context_data(**kwargs)
     pid = kwargs['pid']
     context['pid'] = pid
     context['post'] = Post.objects.get(id=pid)
     context['comments'] = Comment.objects.filter(
         post_id=pid).order_by('-creation_date')
     context['comment_form'] = forms.CommentForm()
     return context
예제 #14
0
    def post(self, request, *args, **kwargs):
        form = forms.CommentForm(request.POST)
        pid = kwargs['pid']
        if form.is_valid():
            comment_obj = form.save(commit=False)
            comment_obj.post_id = pid
            comment_obj.author_id = request.user.id
            comment_obj.save()
        else:
            print(form.errors)

        context = self.get_context_data(**kwargs)
        return super(TemplateView, self).render_to_response(context)
예제 #15
0
 def post(self, request):
     next = request.POST.get('next', '/')
     text = request.POST.get('content')
     if not self.request.user.is_authenticated:
         return redirect('%s?next=%s' % (settings.LOGIN_URL, next))
     form = forms.CommentForm(request.POST)
     if form.is_valid():
         comment = form.save(commit=False)
         comment.user = request.user
         comment.article = models.Article.objects.get(
             pk=request.POST['article_pk'])
         comment.save()
     return HttpResponseRedirect(next)
예제 #16
0
파일: views.py 프로젝트: Waycc/MyBlog
 def post(self, request, article_id):
     """
     以post提交是处理评论的
     """
     post = Post.objects.filter(id=article_id).first()
     form = forms.CommentForm(request.POST)
     if form.is_valid():
         comment = form.cleaned_data['comment']
         name = form.cleaned_data['name']
         if not name:
             name = '无名氏'
         comment = Comment(name=name, text=comment, post=post)
         comment.save()
     url = reverse('blog:article', kwargs={'article_id': article_id})
     return redirect(url)
예제 #17
0
def detail(request, id):
    try:
        model = models.Post.objects.get(id=id)
    except Exception:
        raise Http404()
    form = forms.CommentForm(request.POST if request.method ==
                             'POST' else {'post': model})
    if form.is_valid():
        # .save() masuk kedatabase
        form.save()
        return redirect('blog-detail', id=id)
    return render(request, 'blog/detail.html', {
        'title': model.title,
        'model_baru': model,
        'form': form
    })
예제 #18
0
 def get_context_data(self, **kwargs):
     data = super().get_context_data(**kwargs)
     authorized = self.request.user.is_authenticated
     if 'pk' in self.kwargs:
         article = self.model.objects.get(pk=self.kwargs['pk'])
     else:
         print("BKJBJKBKJBKJBJKB")
         article = self.model.objects.get(slug=self.kwargs['slug'])
     if authorized:
         num_results = models.Like.objects.filter(user=self.request.user,
                                                  article=article).count()
     else:
         num_results = 0
     text = self.request.GET.get('text', '')
     data['comment_form'] = forms.CommentForm(initial={'content': text})
     data['already_liked'] = num_results
     data['authorized'] = authorized
     return data
예제 #19
0
def comment(request, *args, **kwargs):
    post = get_object_or_404(models.Post, pk=kwargs['post_id'])
    if not post.is_comment or not post.is_comment_entry:
        raise PermissionDenied

    form = forms.CommentForm(request.POST or None)
    if not form.is_valid():
        return JsonResponse({
            'status': 11,
            'message': _('Input Error'),
        })

    comment = form.save(commit=False)
    comment.post = post
    comment.client_text = get_client_ip(request)[0]
    comment.save()

    mails.comment_notification(request, comment)
    logging.getLogger(constants.OPERATION_LOG).info({'post': post.id})
    return JsonResponse({
        'status': 1,
        'message': _('COMMENT_REGISTERED'),
    })
예제 #20
0
    def get_context_data(self, **kwargs):
        context = super(DetailView, self).get_context_data(**kwargs)

        init_data = {}
        if self.request.user.is_authenticated():
            init_data['name'] = self.request.user.get_full_name(
            ) or self.request.user.username
            init_data['email'] = self.request.user.email
        else:
            init_data['name'] = self.request.session.get("name", "")
            init_data['email'] = self.request.session.get("email", "")
            init_data['url'] = self.request.session.get("url", "")
        blog = context['blog']
        reply_to_list = [
            temp.pk for temp in Comment.objects.filter(comment_for=blog.pk)
        ]
        comment_f = myforms.CommentForm()
        comments = Comment.objects.filter(comment_for=blog, is_spam=False)
        payload = {'comments': comments, 'comment_form': comment_f}
        comment_f.fields['reply_to'].queryset = Comment.default.filter(
            pk__in=reply_to_list)
        context.update(payload)
        return context
예제 #21
0
 def post(self, *args, **kwargs):
     self.object = self.get_object()
     request = self.request
     context = self.get_context_data(object=self.object)
     comment_f = myforms.CommentForm(self.request.POST)
     if comment_f.is_valid():
         # (1,2,3).append(5)
         comment = Comment()
         post_data = comment_f.cleaned_data
         comment.text = post_data['text']
         comment.reply_to = post_data['reply_to']
         comment.email_id = post_data['email_id']
         comment.comment_for = self.object
         comment.user_name = post_data['user_name']
         comment.user_url = post_data['user_url']
         comment.user_ip = request.META['REMOTE_ADDR']
         comment.user_agent = request.META['HTTP_USER_AGENT']
         comment.is_public = getattr(settings, 'AUTO_APPROVE_COMMENTS',
                                     True)
         comment.save()
         return HttpResponseRedirect('#comment-%s' % comment.pk)
     context.update({'comment_form': comment_f})
     return self.render_to_response(context)
예제 #22
0
 def test_either1(self):
     """何も入力しなければエラーになることを検証"""
     params = dict()
     blog = models.Comment()
     form = forms.CommentForm(params, instance=blog)
     self.assertFalse(form.is_valid())
예제 #23
0
 def get_context_data(self, **kwargs):
     context = super().get_context_data(**kwargs)
     context['comment_form'] = forms.CommentForm(None)
     logging.getLogger(constants.OPERATION_LOG).info({'post':self.object.id})
     return context
예제 #24
0
 def get_context_data(self, **kwargs):
     d = super().get_context_data(**kwargs)
     d['form'] = forms.CommentForm()
     return d
예제 #25
0
 def test_valid(self):
     """正常な入力を行えばエラーにならないことを検証"""
     params = dict(comment="test", post=1)
     comment = models.Comment()
     form = forms.CommentForm(params, instance=comment)
     self.assertTrue(form.is_valid())