From 21c466b2004e4c80e88de3e53b41c8e03f7f3d79 Mon Sep 17 00:00:00 2001
From: Brett Parker 
Date: Sun, 29 Mar 2009 13:05:43 +0100
Subject: [PATCH] Blog enhancements
---
 sommitrealweird/blog/feeds.py                 |  6 +++
 .../blog/templates/blog/blog_index.html       |  2 +-
 sommitrealweird/blog/urls.py                  |  3 ++
 sommitrealweird/blog/views.py                 | 42 +++++++++++++++++++
 4 files changed, 52 insertions(+), 1 deletion(-)
diff --git a/sommitrealweird/blog/feeds.py b/sommitrealweird/blog/feeds.py
index d08456f..be04190 100644
--- a/sommitrealweird/blog/feeds.py
+++ b/sommitrealweird/blog/feeds.py
@@ -18,5 +18,11 @@ class LatestBlogEntries(Feed):
         except:
             return BlogEntry.objects.all().order_by('-publish_date')
 
+    def author_name(self, obj):
+        return "Brett Parker"
+
+    def author_email(self, obj):
+        return "iDunno@sommitrealweird.co.uk"
+
     def item_pubdate(self, obj):
         return obj.publish_date
diff --git a/sommitrealweird/blog/templates/blog/blog_index.html b/sommitrealweird/blog/templates/blog/blog_index.html
index e43cc64..395c8e8 100644
--- a/sommitrealweird/blog/templates/blog/blog_index.html
+++ b/sommitrealweird/blog/templates/blog/blog_index.html
@@ -20,7 +20,7 @@
                 {% endfor %}
                 permalink
         {% endfor %}
-        {% if paginated %}
+        {% if paginated and has_more_than_one_page %}
             Pages: 
             {% if has_prev %}
                 Previous |
diff --git a/sommitrealweird/blog/urls.py b/sommitrealweird/blog/urls.py
index f41ed25..2ec24bd 100644
--- a/sommitrealweird/blog/urls.py
+++ b/sommitrealweird/blog/urls.py
@@ -5,6 +5,9 @@ urlpatterns = patterns('',
     (r'^(?P[0-9]{4})/(?P[0-9]{2})/(?P[0-9]{2})/(?P[^/]+)(/|)$', 'blog.views.blog_view'),
     (r'^(?P[0-9]{4})(?P[0-9]{2})(?P[0-9]{2})-(?P[^/]+)\.html$', 'blog.views.blog_view'),
     (r'^(?P[0-9]{4})(?P[0-9]{2})(?P[0-9]{2})(?P[0-9]{2})(?P[0-9]{2})-(?P[^/]+)\.html$', 'blog.views.blog_view'),
+    (r'^(?P[0-9]{4})/(?P[0-9]{2})/(?P[0-9]{2})/$', 'blog.views.blog_view'),
+    (r'^(?P[0-9]{4})/(?P[0-9]{2})/$', 'blog.views.blog_view'),
+    (r'^(?P[0-9]{4})/$', 'blog.views.blog_view'),
     (r'^section/(?P[^/]*)/$', 'blog.views.blog_index'),
     (r'^$', 'blog.views.blog_index'),
 )
diff --git a/sommitrealweird/blog/views.py b/sommitrealweird/blog/views.py
index b01bec8..08b5267 100644
--- a/sommitrealweird/blog/views.py
+++ b/sommitrealweird/blog/views.py
@@ -26,6 +26,7 @@ def blog_index(request, section=None):
                 "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,
@@ -52,3 +53,44 @@ def blog_view(request, year=None, month=None, day=None, hour=None, minutes=None,
                 }
             )
             return HttpResponse(t.render(c))
+    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
+            paginated_entries = paginator.page(page)
+            pages = paginator.page_range
+            t = loader.get_template("blog/blog_index.html")
+            c = RequestContext(request,
+                {
+                    "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 HttpResponse(t.render(c))
+        else:
+            raise Http404
-- 
2.39.5