diff --git a/categories/templatetags/category_tags.py b/categories/templatetags/category_tags.py index f5ff719..07255e2 100644 --- a/categories/templatetags/category_tags.py +++ b/categories/templatetags/category_tags.py @@ -102,4 +102,33 @@ def display_path_as_ul(category): cat = get_category(category) return {} - \ No newline at end of file + + +class TopLevelCategoriesNode(template.Node): + def __init__(self, varname): + self.varname = varname + + def render(self, context): + context[self.varname] = Category.objects.filter(parent=None).order_by('name') + return '' + + +def get_top_level_categories(parser, token): + """ + Retrives an alphabetical list of all the categories with with no parents. + + Syntax:: + + {% get_top_level_categories as categories %} + + Returns an list of categories + + """ + bits = token.contents.split() + if len(bits) != 3: + raise template.TemplateSyntaxError, "Tag %s must have 2 arguments." % bits[0] + if bits[1] != 'as': + raise template.TemplateSyntaxError, "First argyment must be 'as'." + return TopLevelCategoriesNode(bits[2]) + +register.tag(get_top_level_categories) \ No newline at end of file diff --git a/categories/urls.py b/categories/urls.py index 84ff58b..194c715 100644 --- a/categories/urls.py +++ b/categories/urls.py @@ -9,9 +9,6 @@ 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' - #), ) urlpatterns += patterns('categories.views', diff --git a/categories/views.py b/categories/views.py index e69de29..baec0f1 100644 --- a/categories/views.py +++ b/categories/views.py @@ -0,0 +1,17 @@ +from django.shortcuts import get_object_or_404, render_to_response +from django.template import RequestContext +from categories.models import Category +from django.views.decorators.cache import cache_page + +def category_detail(request, slug, with_stories=False, + template_name='categories/category_detail.html'): + context = {} + category = get_object_or_404(Category, + slug__iexact=slug) + + context['category'] = category + + return render_to_response(template_name, + context, + context_instance=RequestContext(request) + )