diff --git a/.gitignore b/.gitignore index a9cb85e..33bff60 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ media/js/*.r*.js media/css/*.r*.css *DS_Store *.egg-info + diff --git a/categories/templates/categories/category_detail.html b/categories/templates/categories/category_detail.html new file mode 100644 index 0000000..e69de29 diff --git a/categories/urls.py b/categories/urls.py index 513f8ca..84ff58b 100644 --- a/categories/urls.py +++ b/categories/urls.py @@ -1,19 +1,19 @@ from django.conf.urls.defaults import * -from categories.models import * +from categories.models import Category categorytree_dict = { - 'queryset': CategoryTree.objects.all() + 'queryset': Category.objects.all() } urlpatterns = patterns('django.views.generic.list_detail', url( r'^$', 'object_list', categorytree_dict, name='categories_tree_list' ), - url( - r'^(?P[\w-]+)/$', 'object_detail', categorytree_dict, name='categories_tree' - ), + #url( + # r'^(?P[\w-]+)/$', 'object_detail', categorytree_dict, name='categories_tree' + #), ) urlpatterns += patterns('categories.views', - url(r'^(?P[\w-]+)/(?P[\w\-\/]+)/$', 'category_detail', name='categories_category'), + url(r'^(?P[\w-]+)/$', 'category_detail', {'with_stories': True}, name='categories_category'), ) \ No newline at end of file diff --git a/categories/views.py b/categories/views.py index 4ec49cb..bac592b 100644 --- a/categories/views.py +++ b/categories/views.py @@ -1,21 +1,23 @@ from django.shortcuts import get_object_or_404, render_to_response from django.template import RequestContext -from ellington.categories.models import * +from categories.models import Category +from stories.models import Story +from django.db.models import Q +from django.views.decorators.cache import cache_page -def category_detail(request, slug, category_slug): - """ - A detail view of a category. - - Templates: - :template:`categories/category_detail.html` - Context: - category - A :model:`categories.Category` object. - """ +def category_detail(request, slug, with_stories=False, + template_name='categories/category_detail.html'): + context = {} category = get_object_or_404(Category, - hierarchy__slug=slug, - slug_path="/%s" % category_slug) - return render_to_response('categories/category_detail.html', - {'category' : category}, + slug__iexact=slug) + + context['category'] = category + + if with_stories: + stories = Story.published.filter(Q(primary_category=category) | Q(categories__in=[category,])) + context['stories'] = stories + + return render_to_response(template_name, + context, context_instance=RequestContext(request) )