X-Git-Url: http://git.ithinksw.org/philo.git/blobdiff_plain/ac6ebd8b38a46afb0b249574be71a276f95b6efa..61b73fe068172f02d6c47e2b5387161919ec9618:/philo/templatetags/collections.py diff --git a/philo/templatetags/collections.py b/philo/templatetags/collections.py index 80dc20d..e9db2bd 100644 --- a/philo/templatetags/collections.py +++ b/philo/templatetags/collections.py @@ -1,3 +1,8 @@ +""" +The collection template tags are automatically included as builtins if :mod:`philo` is an installed app. + +""" + from django import template from django.conf import settings from django.contrib.contenttypes.models import ContentType @@ -21,8 +26,11 @@ class MembersofNode(template.Node): return '' -def do_membersof(parser, token): +@register.tag +def membersof(parser, token): """ + Given a collection and a content type, sets the results of :meth:`collection.members.with_model <.CollectionMemberManager.with_model>` as a variable in the context. + Usage:: {% membersof with . as %} @@ -39,7 +47,7 @@ def do_membersof(parser, token): try: app_label, model = params[3].strip('"').split('.') - ct = ContentType.objects.get(app_label=app_label, model=model) + ct = ContentType.objects.get_by_natural_key(app_label, model) except ValueError: raise template.TemplateSyntaxError('"%s" template tag option "with" requires an argument of the form app_label.model (see django.contrib.contenttypes)' % tag) except ContentType.DoesNotExist: @@ -48,7 +56,4 @@ def do_membersof(parser, token): if params[4] != 'as': raise template.TemplateSyntaxError('"%s" template tag requires the fifth parameter to be "as"' % tag) - return MembersofNode(collection=params[1], model=ct.model_class(), as_var=params[5]) - - -register.tag('membersof', do_membersof) \ No newline at end of file + return MembersofNode(collection=params[1], model=ct.model_class(), as_var=params[5]) \ No newline at end of file