X-Git-Url: http://git.ithinksw.org/philo.git/blobdiff_plain/ed6b9876b7abff0b2dc6266d6f769c319f358a9c..61b73fe068172f02d6c47e2b5387161919ec9618:/philo/templatetags/collections.py diff --git a/philo/templatetags/collections.py b/philo/templatetags/collections.py index 38b3f91..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,9 +26,15 @@ class MembersofNode(template.Node): return '' -def do_membersof(parser, token): +@register.tag +def membersof(parser, token): """ - {% membersof with . as %} + 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 %} + """ params=token.split_contents() tag = params[0] @@ -36,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: @@ -45,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