from django.template import RequestContext from boards import forms import boards 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).""" title = request.POST['title'] text = request.POST['text'] 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) if thread_id != boards.models.NO_PARENT: request.method = 'GET' return thread(request, thread_id) else: return redirect(thread, id = post.id) 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('/boards') 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('/boards')