From 535e2f41b0a2b0c0ead2fea884a54b4f14d0ae62 Mon Sep 17 00:00:00 2001 From: str4d Date: Sun, 3 Feb 2013 02:17:41 +0000 Subject: [PATCH] Added category view for blog posts --- i2p2www/blog/views.py | 10 ++++++++++ i2p2www/pages/blog/category.html | 4 ++++ i2p2www/pages/global/macros | 3 ++- i2p2www/urls.py | 2 ++ 4 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 i2p2www/pages/blog/category.html diff --git a/i2p2www/blog/views.py b/i2p2www/blog/views.py index b15b48b2..b5ce5a7e 100644 --- a/i2p2www/blog/views.py +++ b/i2p2www/blog/views.py @@ -18,6 +18,16 @@ def blog_index(page): pagination = Pagination(page, BLOG_POSTS_PER_PAGE, len(all_posts)) return render_template('blog/index.html', pagination=pagination, posts=posts) +@cache.memoize(600) +def blog_category(category, page): + posts = get_blog_posts() + category_posts = [(slug, post) for (slug, post) in posts if post['category'] and category in post['category']] + posts = get_for_page(category_posts, page, BLOG_POSTS_PER_PAGE) + if not posts and page != 1: + abort(404) + pagination = Pagination(page, BLOG_POSTS_PER_PAGE, len(category_posts)) + return render_template('blog/category.html', pagination=pagination, posts=posts, category=category) + @cache.memoize(600) def blog_post(slug): # try to render that blog post.. throws 404 if it does not exist diff --git a/i2p2www/pages/blog/category.html b/i2p2www/pages/blog/category.html new file mode 100644 index 00000000..e81a7b8d --- /dev/null +++ b/i2p2www/pages/blog/category.html @@ -0,0 +1,4 @@ +{% extends "blog/index.html" %} +{% block title %}{{ _('Blog Category') }}: {{ category }}{% endblock %} +{% block headextra %} +{%- endblock %} diff --git a/i2p2www/pages/global/macros b/i2p2www/pages/global/macros index 2bd426c9..aea4273b 100644 --- a/i2p2www/pages/global/macros +++ b/i2p2www/pages/global/macros @@ -1,5 +1,6 @@ {%- macro change_lang(lang) -%} {%- if request.endpoint == 'site_show' -%}{{ url_for('site_show', lang=lang, page=page) }} +{%- elif request.endpoint == 'blog_category' -%}{{ url_for('blog_category', lang=lang, category=category) }} {%- elif request.endpoint == 'blog_post' -%}{{ url_for('blog_post', lang=lang, slug=slug) }} {%- elif request.endpoint == 'meetings_show' -%}{{ url_for('meetings_show', lang=lang, id=id) }} {%- elif request.endpoint == 'downloads_select' -%}{{ url_for('downloads_select', lang=lang, file=file) }} @@ -34,7 +35,7 @@ {%- macro render_categories(categories) -%} {%- if categories and categories|length %} -{%- for category in categories %}{{ category }}{% if not loop.last %}, {% endif %}{% endfor %} +{%- for category in categories %}{{ category }}{% if not loop.last %}, {% endif %}{% endfor %} {%- else %}{{ _('None') }} {%- endif %} {%- endmacro %} diff --git a/i2p2www/urls.py b/i2p2www/urls.py index 7e0921d5..a27833fb 100644 --- a/i2p2www/urls.py +++ b/i2p2www/urls.py @@ -40,6 +40,8 @@ url('//', 'views.site_show') url('//blog/', 'blog.views.blog_index', defaults={'page': 1}) url('//blog/page/', 'blog.views.blog_index') +url('//blog/category/', 'blog.views.blog_category', defaults={'page': 1}) +url('//blog/category//page/', 'blog.views.blog_category') url('//blog/post/', 'blog.views.blog_post') url('//feed/blog/rss', 'blog.views.blog_rss') url('//feed/blog/atom', 'blog.views.blog_atom')