view gpp/forums/views.py @ 82:bc3978f023c2

Forums: started the ability to display topics inside a forum.
author Brian Neal <bgneal@gmail.com>
date Sun, 23 Aug 2009 04:04:29 +0000
parents e356ea79a7a2
children 5b4c812b448e
line wrap: on
line source
"""
Views for the forums application.
"""
from django.http import Http404
from django.shortcuts import get_object_or_404
from django.shortcuts import render_to_response
from django.template import RequestContext

from forums.models import Forum


def index(request):
    """
    This view displays all the forums available, ordered in each category.
    """
    forums = Forum.objects.all().select_related()
    cats = {}
    for forum in forums:
        cat = cats.setdefault(forum.category.id, {
            'cat': forum.category,
            'forums': [],
            })
        cat['forums'].append(forum)

    cmpdef = lambda a, b: cmp(a['cat'].position, b['cat'].position)
    cats = sorted(cats.values(), cmpdef)

    return render_to_response('forums/index.html', {
        'cats': cats,
        },
        context_instance=RequestContext(request))


def forum_index(request, slug):
    """
    Displays all the topics in a forum.
    """
    forum = get_object_or_404(Forum, slug=slug)
    topics = forum.topics.select_related()
    
    return render_to_response('forums/forum_index.html', {
        'forum': forum,
        'topics': topics,
        },
        context_instance=RequestContext(request))


def topic_index(request, id):
    """
    Displays all the posts in a topic.
    """
    raise Http404