This commit is contained in:
2025-08-22 07:09:16 +05:30
parent ef3b6ddaac
commit 7cdb1a0ac4
+39 -3
View File
@@ -4,10 +4,10 @@ from django.contrib.auth.decorators import login_required
from django.contrib.auth.forms import AuthenticationForm from django.contrib.auth.forms import AuthenticationForm
from django.db.models import Exists, OuterRef from django.db.models import Exists, OuterRef
from django.http import JsonResponse from django.http import JsonResponse
from django.shortcuts import render, redirect from django.shortcuts import render, redirect, get_object_or_404
from django.views.decorators.http import require_POST from django.views.decorators.http import require_POST
from .models import Issue, IssueCategory, User, Vote from .models import Issue, IssueCategory, User, Vote, Comment
from .forms import CitizenRegistrationForm, IssueForm from .forms import CitizenRegistrationForm, IssueForm, CommentForm
def home(request): def home(request):
total_issues = Issue.objects.count() total_issues = Issue.objects.count()
@@ -163,3 +163,39 @@ def vote_issue(request, issue_id):
return JsonResponse({'success': False, 'error': 'Issue not found'}) return JsonResponse({'success': False, 'error': 'Issue not found'})
except Exception as e: except Exception as e:
return JsonResponse({'success': False, 'error': str(e)}) return JsonResponse({'success': False, 'error': str(e)})
@login_required
def add_comment(request, issue_id, parent_id=None):
issue = get_object_or_404(Issue, id=issue_id)
parent = None
if parent_id:
parent = get_object_or_404(Comment, id=parent_id)
if request.method == "POST":
form = CommentForm(request.POST)
if form.is_valid():
comment = form.save(commit=False)
comment.issue = issue
comment.user = request.user
comment.parent = parent
comment.save()
return redirect("issue_detail", issue_id=issue.id)
else:
form = CommentForm()
return render(request, "comments/add_comment.html", {"form": form, "issue": issue})
def issue_detail(request, pk):
issue = get_object_or_404(Issue, pk=pk)
comments = issue.comments.filter(parent__isnull=True) # top-level comments
return render(request, "core/issue_detail.html", {"issue": issue, "comments": comments})
def add_comment(request, pk, parent_id=None):
if request.method == "POST" and request.user.is_authenticated:
issue = get_object_or_404(Issue, pk=pk)
text = request.POST.get("text")
content = request.POST.get("content")
if content:
parent = Comment.objects.get(pk=parent_id) if parent_id else None
Comment.objects.create(issue=issue, user=request.user, content=content, parent=parent)
return redirect("issue_detail", pk=pk)