Ejemplo n.º 1
0
def create_comment(request, thread_id, parent_id=None):
    if request.method == "POST":
        form = forms.CommentForm(request.POST)

        if form.is_valid():
            if parent_id is None:
                parent = None
            else:
                parent = mods.Comment.objects.get(pk=parent_id)

            comment = mods.Comment.objects.create(
                author=request.user,
                body=form.cleaned_data["body"],
                thread_id=thread_id,
                parent=parent,
            )
            return http.HttpResponseRedirect(
                f"{request.META.get('HTTP_REFERER')}{'#comment'}{comment.pk}")
    else:
        form = forms.CommentForm()
        return shortcuts.render(
            request,
            "comment_form.html",
            {
                "form": form,
                "thread_id": thread_id,
                "parent_id": parent_id
            },
        )
Ejemplo n.º 2
0
def render_comments_list_for(context, thread_id):
    all_comments = mods.Comment.objects.filter(thread_id=thread_id)
    parents = [
        (p, 0) for p in all_comments.filter(parent=None).order_by("created_at")
    ]
    html = []
    last_indent = None
    while len(parents):
        p = parents.pop(0)
        if p == "end":
            html.append("end")
            continue

        p, indent = p
        html.append((p, indent))
        last_indent = indent
        parents = ([(c, indent + 1)
                    for c in p.children.order_by("created_at")] + ["end"] +
                   parents)

    html = [p[0] if isinstance(p, tuple) else p for p in html]
    form = forms.CommentForm()
    comments = mods.Comment.objects.filter(
        thread_id="id").order_by("created_at")
    return {
        "html": html,
        "thread_id": thread_id,
        "form": form,
        "user": context["user"],
    }
Ejemplo n.º 3
0
 def create_comment(request, pk):
     if request.method == "post":
         form = comment_form.CommentForm(request.POST)
         post = models.Post.objects.get_or_none(pk=pk)
         if not post:
             return redirect(reverse("core:home"))
         if form.is_valid():
             comment = form.save()
             comment.post = post
             comment.writer = request.user
             return redirect(reverse("posts:detail", kwargs={"pk": post.pk}))
Ejemplo n.º 4
0
def post_comment(request, post_pk):
    post = get_object_or_404(Post, pk=post_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)
        else:
            comment_list = post.comments_set.all()
            context = {'post': post,
                       'comment_list': comment_list,
                       'form': form
                       }
            return render(request, 'blog/detail.html', context=context)
    else:
        redirect(post)
Ejemplo n.º 5
0
def view_thread(request, thread_id):
    all_comments = mods.Comment.objects.filter(thread_id=thread_id)
    parents = [
        (p, 0) for p in all_comments.filter(parent=None).order_by("created_at")
    ]
    html = []
    last_indent = None
    while len(parents):
        p, indent = parents.pop(0)
        if last_indent is not None:
            if last_indent < indent:
                for _ in range(last_indent, indent):
                    html.append("in")
            elif last_indent > indent:
                for _ in range(indent, last_indent):
                    html.append("out")

        html.append((p, indent))
        last_indent = indent
        parents = [(c, indent + 1)
                   for c in p.children.order_by("created_at")] + parents

    # django templates don't support counting loops
    if html:
        last_indent = html[-1][1]
        for i in range(0, last_indent):
            html.append("out")

    html = [p[0] if isinstance(p, tuple) else p for p in html]
    form = forms.CommentForm()
    return shortcuts.render(
        request,
        "raw_comments_list.html",
        {
            "form": form,
            "thread_id": thread_id,
            "html": html
        },
    )
Ejemplo n.º 6
0
def DetailHandler(request):
    art_id = int(request.GET.get("id", 0))
    if art_id == 0:
        return HttpResponseRedirect("/art/index")
    #获取小说详情
    art_queryset = models.Art.objects.get(id=art_id)

    #获取小说对应的章节
    art_capters = models.Chapter.objects.filter(art=art_id)

    #获取评论表单
    comment_form = forms.CommentForm()
    comment_list = Comment.objects.filter(art=art_id)
    context = dict(
        art=art_queryset,
        art_capters=art_capters,
        form=comment_form,
        comment_list=comment_list,
        comment_count=comment_list.count(),
    )

    return render(request, "detail_handler.html", context=context)