From 06d335238a870b1416846f5cbc829918e1389a18 Mon Sep 17 00:00:00 2001 From: Justin Quick Date: Fri, 26 Feb 2010 08:35:05 -0500 Subject: [PATCH 1/2] added missing templates for category traversal --- categories/models.py | 2 +- .../templates/categories/category_detail.html | 4 +++ .../templates/categories/category_list.html | 2 ++ categories/urls.py | 2 +- categories/views.py | 27 +++++++++---------- 5 files changed, 21 insertions(+), 16 deletions(-) create mode 100644 categories/templates/categories/category_detail.html create mode 100644 categories/templates/categories/category_list.html diff --git a/categories/models.py b/categories/models.py index 7e0d472..00909df 100644 --- a/categories/models.py +++ b/categories/models.py @@ -31,7 +31,7 @@ class Category(models.Model): def __unicode__(self): ancestors = self.get_ancestors() return ' > '.join([force_unicode(i.name) for i in ancestors]+[self.name,]) - + mptt.register(Category, order_insertion_by=['name']) diff --git a/categories/templates/categories/category_detail.html b/categories/templates/categories/category_detail.html new file mode 100644 index 0000000..9861c04 --- /dev/null +++ b/categories/templates/categories/category_detail.html @@ -0,0 +1,4 @@ +

{{ category }}

+{% if category.parent %}

Go up to {{ category.parent }}

{% endif %} +

{{ category.description }}

+{% if category.children.count %}

Subcategories

{% endif %} \ No newline at end of file diff --git a/categories/templates/categories/category_list.html b/categories/templates/categories/category_list.html new file mode 100644 index 0000000..d49a504 --- /dev/null +++ b/categories/templates/categories/category_list.html @@ -0,0 +1,2 @@ +

Categories

+ \ No newline at end of file diff --git a/categories/urls.py b/categories/urls.py index 5894c64..651c632 100644 --- a/categories/urls.py +++ b/categories/urls.py @@ -2,7 +2,7 @@ from django.conf.urls.defaults import * from categories.models import Category categorytree_dict = { - 'queryset': Category.objects.all() + 'queryset': Category.objects.filter(level=0) } urlpatterns = patterns('django.views.generic.list_detail', diff --git a/categories/views.py b/categories/views.py index a635e36..8434087 100644 --- a/categories/views.py +++ b/categories/views.py @@ -1,22 +1,21 @@ from django.shortcuts import get_object_or_404, render_to_response from django.template import RequestContext -from categories.models import Category +from django.http import HttpResponse from django.views.decorators.cache import cache_page -from django.core.urlresolvers import reverse +from django.template.loader import select_template +from categories.models import Category +@cache_page(3600) def category_detail(request, path, with_stories=False, template_name='categories/category_detail.html'): - path_items = path.strip('/').split('/') - slug = path_items[-1] - level = len(path_items) - context = {} category = get_object_or_404(Category, - slug__iexact=slug, level=level-1) - - context['category'] = category - - return render_to_response(template_name, - context, - context_instance=RequestContext(request) - ) + slug__iexact = path_items[-1], + level = len(path_items)-1) + template = select_template(( + 'categories/%s.html' % '_'.join(path_items), + template_name, + )) + context = RequestContext(request) + context.update({'category':category}) + return HttpResponse(template.render(context)) \ No newline at end of file From 30ad968c3926488de6db15de2c99220c9baa0853 Mon Sep 17 00:00:00 2001 From: Justin Quick Date: Fri, 26 Feb 2010 13:37:18 -0500 Subject: [PATCH 2/2] tiered template heirarchy --- categories/views.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/categories/views.py b/categories/views.py index 8434087..1f06885 100644 --- a/categories/views.py +++ b/categories/views.py @@ -12,10 +12,13 @@ def category_detail(request, path, with_stories=False, category = get_object_or_404(Category, slug__iexact = path_items[-1], level = len(path_items)-1) - template = select_template(( - 'categories/%s.html' % '_'.join(path_items), - template_name, - )) + + templates = [] + while path_items: + templates.append('categories/%s.html' % '_'.join(path_items)) + path_items.pop() + templates.append(template_name) + context = RequestContext(request) context.update({'category':category}) - return HttpResponse(template.render(context)) \ No newline at end of file + return HttpResponse(select_template(templates).render(context)) \ No newline at end of file