]> git.sommitrealweird.co.uk Git - sommitrealweird.git/blob - sommitrealweird/blog/views.py
fix: quick and dirty update to django 4.2
[sommitrealweird.git] / sommitrealweird / blog / views.py
1 from blog.models import BlogEntry, BlogSection
2 from django.http import Http404, HttpResponse
3 from django.shortcuts import render
4 from django.template import RequestContext, loader
5 from django.core.paginator import Paginator
6 from django.conf import settings
7
8 def blog_index(request, section=None):
9     entries = BlogEntry.objects.all()
10     if section:
11         entries = entries.filter(sections__slug__exact=section)
12     entries = entries.order_by('-publish_date')
13     if entries:
14         paginate_by=20
15         paginator = Paginator(entries, paginate_by)
16         try:
17             page = int(request.GET.get('page', 1))
18         except ValueError:
19             page = 1
20         try:
21             paginated_entries = paginator.page(page)
22             pages = paginator.page_range
23             c = {
24                     "entries": paginated_entries.object_list,
25                     "title": settings.BLOG_TITLE,
26                     "page": page,
27                     "pages": pages,
28                     "paginated": 1,
29                     "has_more_than_one_page": (len(pages) > 1),
30                     "has_next": paginated_entries.has_next(),
31                     "has_prev": paginated_entries.has_previous(),
32                     "next": page + 1,
33                     "prev": page - 1
34                 }
35             return render(request, 'blog/blog_index.html', c)
36         except:
37             raise Http404
38     else:
39         return render(request, 'blog/blog_index.html')
40         raise Http404
41
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!)
46             year = int(year)
47             month = int(month)
48             day = int(day)
49             try:
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                 c = {
53                         "entry": blog_entry,
54                         "publish_date": blog_entry.publish_date
55                     }
56                 return render(request, template_name, c)
57             except:
58                 raise Http404
59     else:
60         entries = BlogEntry.objects.all()
61         if year and month and day:
62             year = int(year)
63             month = int(month)
64             day = int(day)
65             entries = entries.filter(publish_date__year=year, publish_date__month=month, publish_date__day=day)
66         elif year and month:
67             year = int(year)
68             month = int(month)
69             entries = entries.filter(publish_date__year=year, publish_date__month=month)
70         elif year:
71             year = int(year)
72             entries = entries.filter(publish_date__year=year)
73         if entries:
74             entries = entries.order_by('-publish_date')
75             paginate_by=20
76             paginator = Paginator(entries, paginate_by)
77             try:
78                 page = int(request.GET.get('page', 1))
79             except ValueError:
80                 page = 1
81             try:
82                 paginated_entries = paginator.page(page)
83                 pages = paginator.page_range
84                 c = {
85                         "entries": paginated_entries.object_list,
86                         "title": settings.BLOG_TITLE,
87                         "page": page,
88                         "pages": pages,
89                         "paginated": 1,
90                         "has_more_than_one_page": (len(pages) > 1),
91                         "has_next": paginated_entries.has_next(),
92                         "has_prev": paginated_entries.has_previous(),
93                         "next": page + 1,
94                         "prev": page - 1
95                     }
96                 return render(request, "blog/blog_index.html", c)
97             except:
98                 raise Http404
99         else:
100             raise Http404