64 lines
2.7 KiB
Python
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))
|