aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Tom Willemsen2012-03-27 22:44:39 +0200
committerGravatar Tom Willemsen2012-03-27 22:44:39 +0200
commit74c070279fb1c240779f9562ab6171ba32e3d744 (patch)
tree83c342d82e0eb91e807bfd229c71a6f858c019be
parent43d5b96188f6ffcc0196a29a11dec10776c30af5 (diff)
downloadryuslash.org-74c070279fb1c240779f9562ab6171ba32e3d744.tar.gz
ryuslash.org-74c070279fb1c240779f9562ab6171ba32e3d744.zip
Add categories to main page
-rw-r--r--aggregator/views.py20
-rw-r--r--static/main.css15
-rw-r--r--templates/aggregator/base.html8
-rw-r--r--templates/aggregator/posts.html6
-rw-r--r--urls.py3
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 %}
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<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()),