diff ygroup/views.py @ 581:ee87ea74d46b

For Django 1.4, rearranged project structure for new manage.py.
author Brian Neal <bgneal@gmail.com>
date Sat, 05 May 2012 17:10:48 -0500
parents gpp/ygroup/views.py@0c18dfb1da1c
children 5d208c3321ce
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ygroup/views.py	Sat May 05 17:10:48 2012 -0500
@@ -0,0 +1,55 @@
+"""
+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)