1 from blog.models import BlogEntry, BlogSection
 
   2 from django.http import Http404, HttpResponse
 
   3 from django.template import RequestContext, loader
 
   4 from django.core.paginator import Paginator
 
   5 from django.conf import settings
 
   7 def blog_index(request, section=None):
 
   8     entries = BlogEntry.objects.all()
 
  10         entries = entries.filter(sections__slug__exact=section)
 
  11     entries = entries.order_by('-publish_date')
 
  14         paginator = Paginator(entries, paginate_by)
 
  16             page = int(request.GET.get('page', 1))
 
  19         paginated_entries = paginator.page(page)
 
  20         pages = paginator.page_range
 
  21         t = loader.get_template("blog/blog_index.html")
 
  22         c = RequestContext(request,
 
  24                 "entries": paginated_entries.object_list,
 
  25                 "title": settings.BLOG_TITLE,
 
  29                 "has_more_than_one_page": (len(pages) > 1),
 
  30                 "has_next": paginated_entries.has_next(),
 
  31                 "has_prev": paginated_entries.has_previous(),
 
  35         return HttpResponse(t.render(c))
 
  39 def blog_view(request, year=None, month=None, day=None, hour=None, minutes=None, section=None, slug=None):
 
  40     # work out what we've got roughly
 
  41     if year and month and day and slug:
 
  42         # exact blog entry (woo!)
 
  46             blog_entry = BlogEntry.objects.get(publish_date__year=year, publish_date__month=month, publish_date__day=day, slug__exact=slug)
 
  47             template_name = "blog/single_entry_%s.html" %(blog_entry.format,)
 
  48             t = loader.get_template(template_name)
 
  49             c = RequestContext(request,
 
  52                     "publish_date": blog_entry.publish_date
 
  55             return HttpResponse(t.render(c))
 
  57         entries = BlogEntry.objects.all()
 
  58         if year and month and day:
 
  62             entries = entries.filter(publish_date__year=year, publish_date__month=month, publish_date__day=day)
 
  66             entries = entries.filter(publish_date__year=year, publish_date__month=month)
 
  69             entries = entries.filter(publish_date__year=year)
 
  71             entries = entries.order_by('-publish_date')
 
  73             paginator = Paginator(entries, paginate_by)
 
  75                 page = int(request.GET.get('page', 1))
 
  78             paginated_entries = paginator.page(page)
 
  79             pages = paginator.page_range
 
  80             t = loader.get_template("blog/blog_index.html")
 
  81             c = RequestContext(request,
 
  83                     "entries": paginated_entries.object_list,
 
  84                     "title": settings.BLOG_TITLE,
 
  88                     "has_more_than_one_page": (len(pages) > 1),
 
  89                     "has_next": paginated_entries.has_next(),
 
  90                     "has_prev": paginated_entries.has_previous(),
 
  94             return HttpResponse(t.render(c))