diff --git a/categories/models.py b/categories/models.py index 2761521..fba6a6d 100644 --- a/categories/models.py +++ b/categories/models.py @@ -31,5 +31,5 @@ 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..1f06885 100644 --- a/categories/views.py +++ b/categories/views.py @@ -1,22 +1,24 @@ 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) + + 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(select_template(templates).render(context)) \ No newline at end of file