Files
caminus/forums/views.py
2012-02-19 17:46:15 -05:00

64 lines
2.7 KiB
Python

import models
import forms
from django.contrib.auth.decorators import login_required
from django.shortcuts import render_to_response
from django.http import HttpResponseRedirect
from django.template import RequestContext
from django.core.urlresolvers import reverse
def index(request):
forums = models.Forum.objects.filter(parent=None)
return render_to_response('forums/index.html', {"forums":forums}, context_instance = RequestContext(request))
def forum(request, forum):
forum = models.Forum.objects.get(slug=forum)
topics = forum.topic_set.all()
return render_to_response('forums/forum.html', {"forum":forum, "topics":topics}, context_instance = RequestContext(request))
def topic(request, topicID, forumSlug=None, topicSlug=None):
topic = models.Topic.objects.get(id=topicID)
return render_to_response('forums/topic.html', {"topic":topic}, context_instance = RequestContext(request))
def post(request, id):
post = models.Post.objects.get(id=id)
rootPost = post.get_root()
return HttpResponseRedirect(reverse('forums.views.topic', kwargs={"topicID":rootPost.topic.id})+"#reply-"+id)
@login_required
def reply(request, topicID=None):
parentPost = models.Post.objects.get(id__exact=topicID)
if request.method == 'POST':
form = forms.ReplyForm(request.POST)
else:
form = forms.ReplyForm()
if form.is_valid():
reply = models.Post()
reply.parent = parentPost
reply.body = form.cleaned_data['body']
reply.user = request.user
reply.save()
return HttpResponseRedirect(reverse('forums.views.post', kwargs={"id":reply.id}))
return render_to_response('forums/reply.html', {"post":parentPost, "form":form}, context_instance = RequestContext(request))
@login_required
def newTopic(request, forumID=None):
parentForum = models.Forum.objects.get(id__exact=forumID)
if request.method == 'POST':
replyForm = forms.ReplyForm(request.POST, prefix='reply')
topicForm = forms.TopicForm(request.POST, prefix='topic')
else:
replyForm = forms.ReplyForm(prefix='reply')
topicForm = forms.TopicForm(prefix='topic')
if replyForm.is_valid() and topicForm.is_valid():
topic = models.Topic()
topic.title = topicForm.cleaned_data['title']
topic.forum = parentForum
reply = models.Post()
reply.body = replyForm.cleaned_data['body']
reply.user = request.user
reply.save()
topic.rootPost = reply
topic.save()
return HttpResponseRedirect(reverse('forums.views.post', kwargs={'id': reply.id}))
return render_to_response('forums/newTopic.html', {"forum":parentForum, "replyForm":replyForm, "topicForm": topicForm}, context_instance = RequestContext(request))