def index(request): """A view of the site index page""" tumblelogs_per_page = get_cached_site_prefs().tumblelog_entries_per_page tumbelelog_entry_list = TumblelogEntry.objects.published() if len(tumbelelog_entry_list) > tumblelogs_per_page: tumbelelog_entry_list = tumbelelog_entry_list[:tumblelogs_per_page] tumblelog_next_page = reverse("tumblelog:list") + "?page=2" else: tumblelog_next_page = None blogs_per_page = get_cached_site_prefs().blog_entries_per_page blog_entry_list = BlogEntry.objects.published() if len(blog_entry_list) > blogs_per_page: blog_entry_list = blog_entry_list[:blogs_per_page] blog_next_page = reverse("blog:entry_list") + "?page=2" else: blog_next_page = None return simple.direct_to_template(request, template = 'index.html', extra_context = { 'tumblelog_entry_list': tumbelelog_entry_list, 'tumblelog_next_page_link': tumblelog_next_page, 'blog_entry_list': blog_entry_list, 'blog_next_page_link': blog_next_page } )
def test_index(self): """ Verify that the site index page contains all blog entries and tumblelog entires within the page's context. """ response = self.client.get(reverse("index")) self.failUnlessEqual(response.status_code, 200) pg_blog_at = get_cached_site_prefs().blog_entries_per_page pg_tumblelog_at = get_cached_site_prefs().tumblelog_entries_per_page try: response.context['blog_entry_list'] except KeyError: self.fail(( "Template context did not contain required blog entry " "objects." )) for entry in BlogEntry.objects.published()[:pg_blog_at]: self.assertTrue(entry in response.context['blog_entry_list']) try: response.context['tumblelog_entry_list'] except KeyError: self.fail(( "Template context did not contain required tumblelog entry " "objects." )) for entry in TumblelogEntry.objects.published()[:pg_tumblelog_at]: self.assertTrue(entry in response.context['tumblelog_entry_list'])
def site_preferences(request): """ A context processor that includes the site_preferences object for the current site (e.g. site title, blog and tumblelog settings). To avoid a DB lookup for every request, we'll cache site preferences by site ID. """ return {'site_preferences': get_cached_site_prefs()}
def tumblelog_entry_list(request): """A view of all tumblelog entires, paginated""" return list_detail.object_list(request, queryset = TumblelogEntry.objects.published(), paginate_by = get_cached_site_prefs().tumblelog_entries_per_page, page = get_page(request), template_name = "blogging/tumblelog_entry_list.html", template_object_name = "entry" )
def entry_list(request): """A view of a blog index page""" return list_detail.object_list(request, queryset= BlogEntry.objects.published(), paginate_by = get_cached_site_prefs().blog_entries_per_page, page = get_page(request), template_name = 'blogging/blog_entry_list.html', template_object_name = "entry" )
def test_entry_list(self): """ Verify that the blog index page contains all blog entry headlines within the page's context. """ response = self.client.get(reverse("blog:entry_list")) self.failUnlessEqual(response.status_code, 200) paginate_at = get_cached_site_prefs().blog_entries_per_page try: response.context['entry_list'] except KeyError: self.fail("Template context did not contain entry_list object.") for entry in BlogEntry.objects.published()[:paginate_at]: self.assertTrue(entry in response.context['entry_list'])
from django.core.urlresolvers import reverse from django.views.generic import simple from project_utils import annotate from site_preferences.utils import get_cached_site_prefs from blogging.models import TumblelogEntry, BlogEntry from blogging.settings import BloggingSettings @annotate(breadcrumb=get_cached_site_prefs().site_title) def index(request): """A view of the site index page""" tumblelogs_per_page = get_cached_site_prefs().tumblelog_entries_per_page tumbelelog_entry_list = TumblelogEntry.objects.published() if len(tumbelelog_entry_list) > tumblelogs_per_page: tumbelelog_entry_list = tumbelelog_entry_list[:tumblelogs_per_page] tumblelog_next_page = reverse("tumblelog:list") + "?page=2" else: tumblelog_next_page = None blogs_per_page = get_cached_site_prefs().blog_entries_per_page blog_entry_list = BlogEntry.objects.published() if len(blog_entry_list) > blogs_per_page: blog_entry_list = blog_entry_list[:blogs_per_page] blog_next_page = reverse("blog:entry_list") + "?page=2" else: blog_next_page = None return simple.direct_to_template(request, template = 'index.html',
from django.shortcuts import get_object_or_404 from django.views.generic import list_detail, simple from project_utils import annotate, get_page from site_preferences.utils import get_cached_site_prefs from models import TumblelogEntry from settings import BloggingSettings from utils import get_cached_tumblelog_entry_title @annotate(breadcrumb=get_cached_site_prefs().tumblelog_title) def tumblelog_entry_list(request): """A view of all tumblelog entires, paginated""" return list_detail.object_list(request, queryset = TumblelogEntry.objects.published(), paginate_by = get_cached_site_prefs().tumblelog_entries_per_page, page = get_page(request), template_name = "blogging/tumblelog_entry_list.html", template_object_name = "entry" ) @annotate(breadcrumb=get_cached_tumblelog_entry_title) def tumblelog_entry_detail(request, slug=None): """A view of a tumblelog entry""" entry = get_object_or_404(TumblelogEntry.objects.published(), slug=slug) return simple.direct_to_template(request, template="blogging/tumblelog_entry_detail.html", extra_context={'entry': entry} )