From 74c070279fb1c240779f9562ab6171ba32e3d744 Mon Sep 17 00:00:00 2001 From: Tom Willemsen Date: Tue, 27 Mar 2012 22:44:39 +0200 Subject: Add categories to main page --- aggregator/views.py | 20 ++++++++++++-------- static/main.css | 15 +++++++++++++++ templates/aggregator/base.html | 8 +++++++- templates/aggregator/posts.html | 6 ++++-- urls.py | 3 ++- 5 files changed, 40 insertions(+), 12 deletions(-) diff --git a/aggregator/views.py b/aggregator/views.py index b0fdf3b..aaea0f9 100644 --- a/aggregator/views.py +++ b/aggregator/views.py @@ -1,12 +1,14 @@ from django.core.paginator import Paginator, InvalidPage, EmptyPage from django.http import Http404 -from django.shortcuts import render_to_response +from django.shortcuts import render +from django.views.generic.base import TemplateView -from .models import Post, Feed +from .models import Post, Feed, Category -def posts(request, page=1): - queryset = Post.objects.all() - feeds = Feed.objects.all() +def posts(request, cat, page=1): + category = cat or 'posts' + queryset = Post.objects.filter(feed__categories__name=category) + feeds = Feed.objects.filter(categories__name=category) paginator = Paginator(queryset, 20) if page == None: @@ -17,6 +19,8 @@ def posts(request, page=1): except (EmptyPage, InvalidPage): raise Http404 - return render_to_response('aggregator/posts.html', - { 'list': object_list, - 'feeds': feeds }) + return render(request, 'aggregator/posts.html', + { 'list': object_list, + 'feeds': feeds, + 'category': category, + 'categories': Category.objects.order_by('name') }) diff --git a/static/main.css b/static/main.css index 8a7f2b5..24b7f7f 100644 --- a/static/main.css +++ b/static/main.css @@ -18,6 +18,21 @@ body { font-family: "DejaVu Sans", sans-serif; } +.category { + display: block; + float: right; + padding: 0 5px; + border-left: 1px #202020 solid; + margin-left: 5px; +} + +.category:hover { + border-left: 1px #ffffff solid; + background-color: #dddddd; + color: #404040; + text-decoration: none; +} + .clear { clear: both; } diff --git a/templates/aggregator/base.html b/templates/aggregator/base.html index 6a37f5a..0826711 100644 --- a/templates/aggregator/base.html +++ b/templates/aggregator/base.html @@ -14,7 +14,13 @@

ryuslash

-
Will this ever really be my website?
+
+ Will this ever really be my website? + {% for category in categories %} + {{ category.name }} + {% endfor %} +
{% block menu %}{% endblock %} diff --git a/templates/aggregator/posts.html b/templates/aggregator/posts.html index 2a5b8a1..efd1cb1 100644 --- a/templates/aggregator/posts.html +++ b/templates/aggregator/posts.html @@ -24,13 +24,15 @@
{% if list.has_previous %} {% endif %} {% if list.has_next %} {% endif %} diff --git a/urls.py b/urls.py index 039dff2..a8edc88 100644 --- a/urls.py +++ b/urls.py @@ -6,7 +6,8 @@ from aggregator.models import Post from aggregator.feeds import LatestPostsFeed, LatestCommentsFeed urlpatterns = patterns('', - url(r'^((?P\d+)/)?$', 'aggregator.views.posts'), + url(r'^((?P[a-z_-]+)/)?((?P\d+)/)?$', + 'aggregator.views.posts'), url(r'^post/((?P\d+)/)?$', DetailView.as_view(model=Post)), url(r'^feed/posts/$', LatestPostsFeed()), url(r'^feed/comments/$', LatestCommentsFeed()), -- cgit v1.2.3-54-g00ecf