X-Git-Url: https://git.sommitrealweird.co.uk/sommitrealweird.git/blobdiff_plain/704ace48dfd3f1dd64271d1916c7defb4806e86c..refs/heads/django-4.2:/sommitrealweird/blog/views.py diff --git a/sommitrealweird/blog/views.py b/sommitrealweird/blog/views.py index d5da81b..1f29f98 100644 --- a/sommitrealweird/blog/views.py +++ b/sommitrealweird/blog/views.py @@ -1,7 +1,8 @@ from blog.models import BlogEntry, BlogSection from django.http import Http404, HttpResponse +from django.shortcuts import render from django.template import RequestContext, loader -from django.core.paginator import ObjectPaginator +from django.core.paginator import Paginator from django.conf import settings def blog_index(request, section=None): @@ -11,27 +12,31 @@ def blog_index(request, section=None): entries = entries.order_by('-publish_date') if entries: paginate_by=20 - paginator = ObjectPaginator(entries, paginate_by) - page = int(request.GET.get('page', 0)) - if page > 0: - page = page - 1 - paginated_entries = paginator.get_page(page) - pages = [i for i in range(1, paginator.pages + 1)] - t = loader.get_template("blog/blog_index.html") - c = RequestContext(request, - { - "entries": paginated_entries, - "title": settings.BLOG_TITLE, - "page": page + 1, - "pages": pages, - "paginated": 1, - "has_next": paginator.has_next_page(page), - "has_prev": paginator.has_next_page(page), - "next": page + 2, - "prev": page - 1 - }) - return HttpResponse(t.render(c)) + paginator = Paginator(entries, paginate_by) + try: + page = int(request.GET.get('page', 1)) + except ValueError: + page = 1 + try: + paginated_entries = paginator.page(page) + pages = paginator.page_range + c = { + "entries": paginated_entries.object_list, + "title": settings.BLOG_TITLE, + "page": page, + "pages": pages, + "paginated": 1, + "has_more_than_one_page": (len(pages) > 1), + "has_next": paginated_entries.has_next(), + "has_prev": paginated_entries.has_previous(), + "next": page + 1, + "prev": page - 1 + } + return render(request, 'blog/blog_index.html', c) + except: + raise Http404 else: + return render(request, 'blog/blog_index.html') raise Http404 def blog_view(request, year=None, month=None, day=None, hour=None, minutes=None, section=None, slug=None): @@ -41,13 +46,55 @@ def blog_view(request, year=None, month=None, day=None, hour=None, minutes=None, year = int(year) month = int(month) day = int(day) - blog_entry = BlogEntry.objects.get(publish_date__year=year, publish_date__month=month, publish_date__day=day, slug__exact=slug) - template_name = "blog/single_entry_%s.html" %(blog_entry.format,) - t = loader.get_template(template_name) - c = RequestContext(request, - { - "entry": blog_entry, - "publish_date": blog_entry.publish_date - } - ) - return HttpResponse(t.render(c)) + try: + blog_entry = BlogEntry.objects.get(publish_date__year=year, publish_date__month=month, publish_date__day=day, slug__exact=slug) + template_name = "blog/single_entry_%s.html" %(blog_entry.format,) + c = { + "entry": blog_entry, + "publish_date": blog_entry.publish_date + } + return render(request, template_name, c) + except: + raise Http404 + else: + entries = BlogEntry.objects.all() + if year and month and day: + year = int(year) + month = int(month) + day = int(day) + entries = entries.filter(publish_date__year=year, publish_date__month=month, publish_date__day=day) + elif year and month: + year = int(year) + month = int(month) + entries = entries.filter(publish_date__year=year, publish_date__month=month) + elif year: + year = int(year) + entries = entries.filter(publish_date__year=year) + if entries: + entries = entries.order_by('-publish_date') + paginate_by=20 + paginator = Paginator(entries, paginate_by) + try: + page = int(request.GET.get('page', 1)) + except ValueError: + page = 1 + try: + paginated_entries = paginator.page(page) + pages = paginator.page_range + c = { + "entries": paginated_entries.object_list, + "title": settings.BLOG_TITLE, + "page": page, + "pages": pages, + "paginated": 1, + "has_more_than_one_page": (len(pages) > 1), + "has_next": paginated_entries.has_next(), + "has_prev": paginated_entries.has_previous(), + "next": page + 1, + "prev": page - 1 + } + return render(request, "blog/blog_index.html", c) + except: + raise Http404 + else: + raise Http404