view gpp/ygroup/views.py @ 334:6805d15cda13

Adding a script I had to write on the fly to filter out posts from the posts csv file that had no parent topics. MyISAM let me get away with that, but InnoDB won't.
author Brian Neal <bgneal@gmail.com>
date Sat, 26 Feb 2011 01:28:22 +0000
parents 0c18dfb1da1c
children
line wrap: on
line source
"""
Views for the ygroup (Yahoo Group Archive) application.

"""
from django.shortcuts import get_object_or_404
from django.views.generic import ListView

from ygroup.models import Thread, Post
from core.paginator import DiggPaginator


THREADS_PER_PAGE = 40
POSTS_PER_PAGE = 20


class ThreadIndexView(ListView):
    """
    This generic view displays the list of threads available.

    """
    model = Thread
    paginate_by = THREADS_PER_PAGE

    def get_paginator(self, queryset, per_page, **kwargs):
        """
        Return an instance of the paginator for this view.
        """
        return DiggPaginator(queryset, per_page, body=5, tail=2,
                margin=3, padding=2, **kwargs)


class ThreadView(ListView):
    """
    This generic view displays the posts in a thread.

    """
    context_object_name = "post_list"
    template_name = "ygroup/thread.html"
    paginate_by = POSTS_PER_PAGE

    def get_queryset(self):
        self.thread = get_object_or_404(Thread, pk=self.args[0])
        return Post.objects.filter(thread=self.thread)

    def get_context_data(self, **kwargs):
        context = super(ThreadView, self).get_context_data(**kwargs)
        context['thread'] = self.thread
        return context

    def get_paginator(self, queryset, per_page, **kwargs):
        """
        Return an instance of the paginator for this view.
        """
        return DiggPaginator(queryset, per_page, body=5, tail=2,
                margin=3, padding=2, **kwargs)