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))
20 paginated_entries = paginator.page(page)
21 pages = paginator.page_range
22 t = loader.get_template("blog/blog_index.html")
23 c = RequestContext(request,
25 "entries": paginated_entries.object_list,
26 "title": settings.BLOG_TITLE,
30 "has_more_than_one_page": (len(pages) > 1),
31 "has_next": paginated_entries.has_next(),
32 "has_prev": paginated_entries.has_previous(),
36 return HttpResponse(t.render(c))
42 def blog_view(request, year=None, month=None, day=None, hour=None, minutes=None, section=None, slug=None):
43 # work out what we've got roughly
44 if year and month and day and slug:
45 # exact blog entry (woo!)
50 blog_entry = BlogEntry.objects.get(publish_date__year=year, publish_date__month=month, publish_date__day=day, slug__exact=slug)
51 template_name = "blog/single_entry_%s.html" %(blog_entry.format,)
52 t = loader.get_template(template_name)
53 c = RequestContext(request,
56 "publish_date": blog_entry.publish_date
59 return HttpResponse(t.render(c))
63 entries = BlogEntry.objects.all()
64 if year and month and day:
68 entries = entries.filter(publish_date__year=year, publish_date__month=month, publish_date__day=day)
72 entries = entries.filter(publish_date__year=year, publish_date__month=month)
75 entries = entries.filter(publish_date__year=year)
77 entries = entries.order_by('-publish_date')
79 paginator = Paginator(entries, paginate_by)
81 page = int(request.GET.get('page', 1))
85 paginated_entries = paginator.page(page)
86 pages = paginator.page_range
87 t = loader.get_template("blog/blog_index.html")
88 c = RequestContext(request,
90 "entries": paginated_entries.object_list,
91 "title": settings.BLOG_TITLE,
95 "has_more_than_one_page": (len(pages) > 1),
96 "has_next": paginated_entries.has_next(),
97 "has_prev": paginated_entries.has_previous(),
101 return HttpResponse(t.render(c))