oacpl/forum/views.py

57 lines
2.3 KiB
Python

from django.shortcuts import render, redirect
from .forms import CommentForm, CreatePostForm, EditPostForm
from .models import Thread, Post, Comment
def view(request, thread=None):
if request.method == 'POST':
form = CreatePostForm(request.POST)
if form.is_valid():
instance = form.save(commit=False)
instance.creator = request.user
instance.save()
return redirect('post', post=instance.id)
else:
form = CreatePostForm()
my_posts = None
if request.user.is_authenticated():
my_posts = Post.objects.filter(creator=request.user, resolved=False)
if not thread:
threads = Thread.objects.all()
thread_name = None
posts = Post.objects.filter(resolved=False).order_by('-created')[:10]
else:
threads = None
thread_name = Thread.objects.get(id=thread).name
posts = Post.objects.filter(thread=thread).order_by('-created')
return render(request, 'view.html', {'threads': threads, 'posts': posts, 'myPosts': my_posts, 'thread': thread_name, 'form': form})
def viewPost(request, post):
this_post = Post.objects.get(id=post)
if request.method == 'POST':
if request.POST.get('request') == 'comment':
form = CommentForm(request.POST)
Comment.objects.create(post_id=post,
reply=form.data.get('reply'),
creator=request.user)
elif request.POST.get('request') == 'edit':
form = EditPostForm(request.POST, instance=this_post)
form.save()
elif request.POST.get('request') == 'resolve':
if this_post.creator == request.user or request.user.has_perm('forum.change_post'):
this_post.resolved = True
this_post.save()
elif request.POST.get('request') == 'delete':
if this_post.creator == request.user or request.user.has_perm('forum.delete_post'):
this_post.delete()
return redirect('forum')
form = CommentForm()
edit_form = EditPostForm(instance=this_post)
comments = Comment.objects.filter(post=this_post)
return render(request, 'post.html', {'post': this_post, 'comments': comments, 'form': form, 'editForm': edit_form})