|
|
from django.template import RequestContext
|
|
|
from boards import forms
|
|
|
import boards
|
|
|
from boards.forms import NewThreadForm
|
|
|
from boards.models import Post, Admin
|
|
|
from django.shortcuts import render, get_list_or_404, redirect
|
|
|
from django.http import HttpResponseRedirect, Http404
|
|
|
|
|
|
|
|
|
def index(request):
|
|
|
context = RequestContext(request)
|
|
|
|
|
|
if request.method == 'POST':
|
|
|
return new_post(request)
|
|
|
else:
|
|
|
threads = Post.objects.get_threads()
|
|
|
|
|
|
context['threads'] = None if len(threads) == 0 else threads
|
|
|
context['form'] = forms.NewThreadForm()
|
|
|
|
|
|
return render(request, 'posting_general.html',
|
|
|
context)
|
|
|
|
|
|
|
|
|
def new_post(request, thread_id=boards.models.NO_PARENT):
|
|
|
"""Add a new post (in thread or as a reply)."""
|
|
|
|
|
|
form = NewThreadForm(request.POST, request.FILES)
|
|
|
|
|
|
title = request.POST['title']
|
|
|
text = request.POST['text']
|
|
|
|
|
|
if 'image' in request.FILES.keys():
|
|
|
image = request.FILES['image']
|
|
|
else:
|
|
|
image = None
|
|
|
|
|
|
ip = request.META['REMOTE_ADDR']
|
|
|
|
|
|
# TODO Get tags list, download image (if link is given)
|
|
|
|
|
|
post = Post.objects.create_post(title=title, text=text, ip=ip,
|
|
|
parent_id=thread_id, image=image)
|
|
|
|
|
|
thread_to_show = (post.id if thread_id == boards.models.NO_PARENT else
|
|
|
thread_id)
|
|
|
return redirect(thread, id=thread_to_show)
|
|
|
|
|
|
|
|
|
def tag(request):
|
|
|
"""Get all tag threads (posts without a parent)."""
|
|
|
|
|
|
tag_name = request.GET['tag']
|
|
|
|
|
|
threads = get_list_or_404(Post, tag=tag_name)
|
|
|
|
|
|
context = RequestContext(request)
|
|
|
context['threads'] = None if len(threads) == 0 else threads
|
|
|
context['tag'] = tag_name
|
|
|
|
|
|
return render(request, 'posting_general.html',
|
|
|
context)
|
|
|
|
|
|
|
|
|
def thread(request, id):
|
|
|
"""Get all thread posts"""
|
|
|
|
|
|
if request.method == 'POST':
|
|
|
return new_post(request, id)
|
|
|
else:
|
|
|
# TODO Show 404 if there is no such thread
|
|
|
posts = Post.objects.get_thread(id)
|
|
|
|
|
|
context = RequestContext(request)
|
|
|
context['posts'] = posts
|
|
|
|
|
|
context['form'] = forms.NewThreadForm()
|
|
|
|
|
|
return render(request, 'thread.html', context)
|
|
|
|
|
|
|
|
|
def login(request):
|
|
|
"""Log in as admin"""
|
|
|
|
|
|
if 'name' in request.POST and 'password' in request.POST:
|
|
|
request.session['admin'] = False
|
|
|
|
|
|
isAdmin = len(Admin.objects.filter(name=request.POST['name'],
|
|
|
password=request.POST[
|
|
|
'password'])) > 0
|
|
|
|
|
|
if isAdmin:
|
|
|
request.session['admin'] = True
|
|
|
|
|
|
response = HttpResponseRedirect('/')
|
|
|
|
|
|
else:
|
|
|
response = render(request, 'login.html', {'error': 'Login error'})
|
|
|
else:
|
|
|
response = render(request, 'login.html', {})
|
|
|
|
|
|
return response
|
|
|
|
|
|
|
|
|
def logout(request):
|
|
|
request.session['admin'] = False
|
|
|
return HttpResponseRedirect('/')
|