diff options
author | Tom Willemsen | 2012-03-27 22:44:39 +0200 |
---|---|---|
committer | Tom Willemsen | 2012-03-27 22:44:39 +0200 |
commit | 74c070279fb1c240779f9562ab6171ba32e3d744 (patch) | |
tree | 83c342d82e0eb91e807bfd229c71a6f858c019be | |
parent | 43d5b96188f6ffcc0196a29a11dec10776c30af5 (diff) | |
download | ryuslash.org-74c070279fb1c240779f9562ab6171ba32e3d744.tar.gz ryuslash.org-74c070279fb1c240779f9562ab6171ba32e3d744.zip |
Add categories to main page
-rw-r--r-- | aggregator/views.py | 20 | ||||
-rw-r--r-- | static/main.css | 15 | ||||
-rw-r--r-- | templates/aggregator/base.html | 8 | ||||
-rw-r--r-- | templates/aggregator/posts.html | 6 | ||||
-rw-r--r-- | 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 @@ <h1 id="sitetitle"> <span id="blue">ryu</span><span id="orange">slash</span> </h1> - <div id="sitesubtitle">Will this ever really be my website?</div> + <div id="sitesubtitle"> + Will this ever really be my website? + {% for category in categories %} + <a class="category" + href="/{{ category.name|slugify }}/">{{ category.name }}</a> + {% endfor %} + </div> {% 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 @@ <div id="pager"> {% if list.has_previous %} <div class="nav-prev"> - <a href="/{{ list.previous_page_number }}/" id="previous">previous</a> + <a href="/{{ category }}/{{ list.previous_page_number }}/" + id="previous">previous</a> </div> {% endif %} {% if list.has_next %} <div class="nav-next"> - <a href="/{{ list.next_page_number }}/" id="next">next</a> + <a href="/{{ category }}/{{ list.next_page_number }}/" + id="next">next</a> </div> {% endif %} @@ -6,7 +6,8 @@ from aggregator.models import Post from aggregator.feeds import LatestPostsFeed, LatestCommentsFeed urlpatterns = patterns('', - url(r'^((?P<page>\d+)/)?$', 'aggregator.views.posts'), + url(r'^((?P<cat>[a-z_-]+)/)?((?P<page>\d+)/)?$', + 'aggregator.views.posts'), url(r'^post/((?P<pk>\d+)/)?$', DetailView.as_view(model=Post)), url(r'^feed/posts/$', LatestPostsFeed()), url(r'^feed/comments/$', LatestCommentsFeed()), |