Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions forum/templates/forum/comment_check_delete.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
{% extends 'base.html' %}

{% block title %}确认删除评论{% endblock %}

{% block content %}
<div class="container mt-5">
<div class="row justify-content-center">
<div class="col-md-6 col-lg-5">
<div class="card border-danger">
<div class="card-body">
<h5 class="card-title">删除评论</h5>
<p>该评论将会永久消失!(真的很久!)</p>
<p>请计算 <strong>{{ a }} + {{ b }}</strong> = ?</p>
<form method="post">
{% csrf_token %}
<input type="hidden" name="expected" value="{{ answer }}">
<input type="text" name="answer" class="form-control" required autocomplete="off">
<br/>
<div class="d-grid gap-2">
<input type="submit" value="确认删除" class="btn btn-danger" id="delBtn" disabled>
<a href="{% url 'post_detail' comment.post.id %}" class="btn btn-outline-secondary">取消</a>
</div>
</form>
</div>
</div>
</div>
</div>
</div>

<script>
const input = document.querySelector('input[name="answer"]');
const btn = document.getElementById('delBtn');
input.addEventListener("input", () => {
btn.disabled = input.value !== "{{ answer }}";
});
</script>
{% endblock %}
9 changes: 8 additions & 1 deletion forum/templates/forum/post_detail.html
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,14 @@ <h2 class="mb-4">
<div class="comment-item mb-3 p-3 border rounded">
<div class="comment-header mb-2">
<strong><small class="text-muted">#{{ forloop.counter }}</small> {{ comment.author.username }}</strong>
<small class="text-muted float-end">{{ comment.created_at|date:"Y-m-d H:i" }}</small>
<span>
<small class="text-muted">{{ comment.created_at|date:"Y-m-d H:i" }}</small>
{% if comment.author == request.user %}
<a href="{% url 'comment_delete' comment_id=comment.id %}" class="ms-2 text-danger" title="删除评论">
<i class="bi bi-trash"></i>
</a>
{% endif %}
</span>
</div>
<article class="markdown-body">
{{ comment.content_html | safe }}
Expand Down
1 change: 1 addition & 0 deletions forum/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
path('posts/create/', views.post_create, name='post_create'),
path('posts/<int:post_id>/', views.PostDetailView.as_view(), name='post_detail'),
path('posts/<int:pk>/delete/', views.PostDeleteView.as_view(), name='post_delete'),
path('comments/<int:comment_id>/delete/', views.comment_delete_view, name='comment_delete'),
path('login/', views.LoginView.as_view(), name='login'),
path('settings/', views.user_settings_view, name='settings'),
path('settings/user_delete/', views.user_delete_view, name='user_delete'),
Expand Down
19 changes: 17 additions & 2 deletions forum/views.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import re
import re, random
from django.urls import reverse_lazy
from django.utils import timezone
from django.contrib.auth.models import User
Expand All @@ -11,7 +11,7 @@
from .utils import send_group_notification

from forum.form import MDEditorCommentForm, MDEditorModelForm
from forum.models import Item, Post, Rating
from forum.models import Comment, Item, Post, Rating
from forum.bots_manager import manager

# Create your views here.
Expand Down Expand Up @@ -153,6 +153,21 @@ def get_queryset(self):
qs = super().get_queryset()
return qs.filter(author=self.request.user)

@login_required
def comment_delete_view(request, comment_id):
comment = get_object_or_404(Comment, id=comment_id, author=request.user)
if request.method == 'POST':
answer = request.POST.get('answer', '')
expected = request.POST.get('expected', '')
if answer == expected:
post_id = comment.post.id
comment.delete()
return redirect('post_detail', post_id=post_id)
a, b = random.randint(1, 9), random.randint(1, 9)
return render(request, 'forum/comment_check_delete.html', {
'comment': comment, 'a': a, 'b': b, 'answer': a + b,
})

@login_required
def user_settings_view(request):
webpush = {"group": "webpush_new_posts" }
Expand Down