def handle_token(cls, parser, token): tokens = token.contents.split() if tokens[1] != 'for': raise template.TemplateSyntaxError("First argument in %r tag must be 'for'" % tokens[0]) # {% get_anon_comment_form for obj as varname %} if len(tokens) == 5: if tokens[3] != 'as': raise template.TemplateSyntaxError("Third argument in %r tag must be 'as'" % tokens[0]) return cls( object_expr = parser.compile_filter(tokens[2]), as_varname = tokens[4] ) # {% get_anon_comment_form for app.model pk as varname %} if len(tokens) == 6: if tokens[4] != 'as': raise template.TemplateSyntaxError("Fourth argument in %r tag must be 'as'" % tokens[0]) return cls( ctype = BaseCommentNode.lookup_content_type(tokens[2], tokens[0]), object_pk_expr = parser.compile_filter(tokens[3]), as_varname = tokens[5] ) # {% get_anon_comment_form for obj replying to parent_comment as varname %} if len(tokens) == 8: if tokens[3] != 'replying': raise template.TemplateSyntaxError("Third argument in %r tag must be 'replying'" % tokens[0]) if tokens[4] != 'to': raise template.TemplateSyntaxError("Fourth argument in %r tag must be 'to'" % tokens[0]) if tokens[6] != 'as': raise template.TemplateSyntaxError("Sixth argument in %r tag must be 'as'" % tokens[0]) return cls( object_expr = parser.compile_filter(tokens[2]), parent_comment = parser.compile_filter(tokens[5]), as_varname = tokens[7] ) # {% get_anon_comment_form for app.model pk replying to parent_comment as varname %} if len(tokens) == 9: if tokens[4] != 'replying': raise template.TemplateSyntaxError("Fourth argument in %r tag must be 'replying'" % tokens[0]) if tokens[5] != 'to': raise template.TemplateSyntaxError("Fifth argument in %r tag must be 'to'" % tokens[0]) if tokens[7] != 'as': raise template.TemplateSyntaxError("Seventh argument in %r tag must be 'as'" % tokens[0]) return cls( ctype = BaseCommentNode.lookup_content_type(tokens[2], tokens[0]), object_pk_expr = parser.compile_filter(tokens[3]), parent_comment = parser.compile_filter(tokens[6]), as_varname = tokens[8] ) raise template.TemplateSyntaxError("%r tag requires 4, 5, 7, or 8 arguments" % tokens[0])
def handle_token(cls, parser, token): """Class method to parse render_comment_form and return a Node.""" tokens = token.contents.split() if tokens[1] != 'for': raise template.TemplateSyntaxError("Second argument in %r tag must be 'for'" % tokens[0]) # {% render_comment_form for obj %} if len(tokens) == 3: return cls(object_expr=parser.compile_filter(tokens[2])) # {% render_comment_form for app.model object_pk %} elif len(tokens) == 4: return cls( ctype = BaseCommentNode.lookup_content_type(tokens[2], tokens[0]), object_pk_expr = parser.compile_filter(tokens[3]) ) # {% render_comment_form for obj with parent_id %} elif len(tokens) == 5: if tokens[-2] != u'with': raise template.TemplateSyntaxError("%r tag must have 'with' as the last but one argument" %tokens[0]) return cls( object_expr=parser.compile_filter(tokens[2]), parent = parser.compile_filter(tokens[4]) ) # {% render_comment_form for app.model object_pk with parent_id %} elif len(tokens) == 6: if tokens[-2] != u'with': raise template.TemplateSyntaxError("%r tag must have 'with' as the last but one argument" %tokens[0]) return cls( ctype = BaseThreadedCommentNode.lookup_content_type(tokens[2], tokens[0]), object_pk_expr = parser.compile_filter(tokens[3]), parent = parser.compile_filter(tokens[5]) ) else: raise template.TemplateSyntaxError("%r tag takes 3 to 5 arguments" %tokens[0])
def handle_token(cls, parser, token): tokens = token.contents.split() if tokens[1] != 'for': raise template.TemplateSyntaxError( "Second argument in %r tag must be 'for'" % tokens[0]) extra_kw = {} if tokens[-2] == 'limit': if tokens[-1].isdigit(): extra_kw['limit'] = tokens.pop(-1) # removes limit integer tokens.pop(-1) # removes 'limit' else: raise template.TemplateSyntaxError( "When using 'limit' with %r tag, it needs to be followed by a positive integer" % (tokens[0], )) if tokens[-1] in ('flat', 'root_only', 'newest', 'admin'): extra_kw[str(tokens.pop())] = True if len(tokens) == 3: # {% render_comment_list for obj %} return cls(object_expr=parser.compile_filter(tokens[2]), **extra_kw) elif len(tokens) == 4: # {% render_comment_list for app.models pk %} return cls(ctype=BaseCommentNode.lookup_content_type( tokens[2], tokens[0]), object_pk_expr=parser.compile_filter(tokens[3]), **extra_kw) else: raise template.TemplateSyntaxError( "%r tag takes either 2 or 3 arguments" % (tokens[0], ))
def get_comment_paginator_page(parser, token): """ Gets a paginator for navigating through comment lists Syntax:: {% get_comment_paginator_page for [object] as [varname] %} {% get_comment_paginator_page for [app].[model] [pk] as [varname] %} """ tokens = token.contents.split() if tokens[1] != 'for': raise template.TemplateSyntaxError("First argument in %r tag must be 'for'" % tokens[0]) if len(tokens) == 5: if tokens[3] != 'as': raise template.TemplateSyntaxError("Third argument in %r tag must be 'as'" % tokens[0]) return CommentPaginationPageNode( object_expr = parser.compile_filter(tokens[2]), as_varname = tokens[4] ) if len(tokens) == 6: if tokens[4] != 'as': raise template.TemplateSyntaxError("Fifth argument in %r tag must be 'as'" % tokens[0]) return CommentPaginationPageNode( ctype = BaseCommentNode.lookup_content_type(tokens[2], tokens[0]), object_pk_expr = parser.compile_filter(tokens[3]), as_varname = tokens[5] ) raise template.TemplateSyntaxError("%r tag requires 4 or 5 arguments" % tokens[0])
def handle_token(cls, parser, token): tokens = token.contents.split() if tokens[1] != 'for': raise template.TemplateSyntaxError("First argument in %r tag must be 'for'" % tokens[0]) # {% render_threaded_comment_list for obj with comments comments_enabled_field %} if len(tokens) == 6: if tokens[3] != 'with': raise template.TemplateSyntaxError("Third argument in %r tag must be 'with'" % tokens[0]) if tokens[4] != 'comments': raise template.TemplateSyntaxError("Fourth argument in %r tag must be 'comments'" % tokens[0]) return cls( object_expr = parser.compile_filter(tokens[2]), comments_enabled = parser.compile_filter(tokens[5]) ) # {% render_threaded_comment_list for app.model pk with comments comments_enabled_field %} if len(tokens) == 7: if tokens[4] != 'with': raise template.TemplateSyntaxError("Fourth argument in %r tag must be 'with'" % tokens[0]) if tokens[5] != 'comments': raise template.TemplateSyntaxError("Fifth argument in %r tag must be 'comments'" % tokens[0]) return cls( ctype = BaseCommentNode.lookup_content_type(tokens[2], tokens[0]), object_pk_expr = parser.compile_filter(tokens[3]), comments_enabled = parser.compile_filter(tokens[6]) ) raise template.TemplateSyntaxError("%r tags takes 5 or 6 arguments" % tokens[0])
def handle_token(cls, parser, token): tokens = token.contents.split() if tokens[1] != 'for': raise template.TemplateSyntaxError("Second argument in %r tag must be 'for'" % tokens[0]) # {% get_comment_list for obj as varname %} if len(tokens) == 5: if tokens[3] != 'as': raise template.TemplateSyntaxError("Third argument in %r must be 'as'" % tokens[0]) return cls( object_expr = parser.compile_filter(tokens[2]), as_varname = tokens[4], ) # {% get_comment_list for app.model pk as varname %} elif len(tokens) == 6: if tokens[4] != 'as': raise template.TemplateSyntaxError("Fourth argument in %r must be 'as'" % tokens[0]) return cls( ctype = BaseCommentNode.lookup_content_type(tokens[2], tokens[0]), object_pk_expr = parser.compile_filter(tokens[3]), as_varname = tokens[5], ) else: raise template.TemplateSyntaxError("%r tag requires 4 or 5 arguments" % tokens[0])
def handle_token(cls, parser, token): """ Class method to parse get_comment_list/count/form and return a Node. Forked from django.contrib.comments.templatetags. with_parent, root-only concepts borrowed from django-threadedcomments. """ tokens = token.contents.split() with_parent = None extra_kw = {} extra_possible_kw = ("root_only", "flat", "reverse", "sort=mostcommented", "sort=mostrecentreplies") for dummy in extra_possible_kw: if tokens[-1] in extra_possible_kw: split = str(tokens.pop()).split("=") key = split[0] extra_kw[key] = len(split) > 1 and split[1] or True if tokens[1] != "for": raise template.TemplateSyntaxError("Second argument in %r tag must be 'for'" % tokens[0]) # {% get_whatever for obj as varname %} # {% get_whatever for obj as varname with parent %} if len(tokens) == 5 or len(tokens) == 7: if tokens[3] != "as": raise template.TemplateSyntaxError("Third argument in %r must be 'as'" % tokens[0]) if len(tokens) == 7: if tokens[5] != "with": raise template.TemplateSyntaxError( "When 6 arguments are given, fifth argument in %r must be 'with' followed by the parent commment wanted" % tokens[0] ) with_parent = tokens[6] return cls( object_expr=parser.compile_filter(tokens[2]), as_varname=tokens[4], with_parent=with_parent, **extra_kw ) # {% get_whatever for app.model pk as varname %} # {% get_whatever for app.model pk as varname with parent %} elif len(tokens) == 6 or len(tokens) == 8: if tokens[4] != "as": raise template.TemplateSyntaxError("Fourth argument in %r must be 'as'" % tokens[0]) if len(tokens) == 8: if tokens[6] != "with": raise template.TemplateSyntaxError( "When 6 arguments are given, fifth argument in %r must be 'with' followed by the parent commment wanted" % tokens[0] ) with_parent = tokens[7] return cls( ctype=BaseCommentNode.lookup_content_type(tokens[2], tokens[0]), object_pk_expr=parser.compile_filter(tokens[3]), as_varname=tokens[5], with_parent=with_parent, **extra_kw ) else: raise template.TemplateSyntaxError("%r tag requires 4, 5, 6 or 7 arguments" % tokens[0])
def handle_token(cls, parser, token): tokens = token.contents.split() if tokens[1] != 'for': raise template.TemplateSyntaxError("First argument in %r tag must be 'for'" % tokens[0]) # {% render_anon_comment_form for obj %} if len(tokens) == 3: return cls( object_expr = parser.compile_filter(tokens[2]) ) # {% render_anon_comment_form for app.model pk %} if len(tokens) == 4: return cls( ctype = BaseCommentNode.lookup_content_type(tokens[2], tokens[0]), object_pk_expr = parser.compile_filter(tokens[3]) ) # {% render_anon_comment_form for obj replying to parent_comment %} if len(tokens) == 6: if tokens[3] != 'replying': raise template.TemplateSyntaxError("Third argument in %r tag must be 'replying'" % tokens[0]) if tokens[4] != 'to': raise template.TemplateSyntaxError("Fourth argument in %r tag must be 'to'" % tokens[0]) return cls( object_expr = parser.compile_filter(tokens[2]), parent_comment = parser.compile_filter(tokens[5]) ) # {% render_anon_comment_form for app.model pk replying to parent_comment %} if len(tokens) == 7: if tokens[4] != 'replying': raise template.TemplateSyntaxError("Fourth argument in %r tag must be 'replying'" % tokens[0]) if tokens[5] != 'to': raise template.TemplateSyntaxError("Fifth argument in %r tag must be 'to'" % tokens[0]) return cls( ctype = BaseCommentNode.lookup_content_type(tokens[2], tokens[0]), object_pk_expr = parser.compile_filter(tokens[3]), parent_comment = parser.compile_filter(tokens[6]) ) raise template.TemplateSyntaxError("%r tag requires 2, 3, 5, or 6 arguments" % tokens[0])
def handle_token(cls, parser, token): """Class method to parse render_comment_form and return a Node.""" tokens = token.contents.split() if tokens[1] != 'for': raise template.TemplateSyntaxError("Second argument in %r tag must be 'for'" % tokens[0]) # {% render_comment_form for obj %} if len(tokens) == 3: return cls(object_expr=parser.compile_filter(tokens[2])) # {% render_comment_form for app.models pk %} elif len(tokens) == 4: return cls( ctype = BaseCommentNode.lookup_content_type(tokens[2], tokens[0]), object_pk_expr = parser.compile_filter(tokens[3]) )
def handle_token(cls, parser, token): """Class method to parse render_comment_form and return a Node.""" tokens = token.contents.split() if tokens[1] != 'for': raise template.TemplateSyntaxError( "Second argument in %r tag must be 'for'" % tokens[0]) # {% render_comment_form for obj %} if len(tokens) == 3: return cls(object_expr=parser.compile_filter(tokens[2])) # {% render_comment_form for app.models pk %} elif len(tokens) == 4: return cls(ctype=BaseCommentNode.lookup_content_type( tokens[2], tokens[0]), object_pk_expr=parser.compile_filter(tokens[3]))
def handle_token(cls, parser, token): tokens = token.contents.split() if tokens[1] != 'for': raise template.TemplateSyntaxError("Second argument in %r tag must be 'for'" % tokens[0]) extra_kw = {} if tokens[-1] in ('flat', 'root_only', 'karma', 'tree'): extra_kw[str(tokens.pop())] = True if len(tokens) == 3: # {% render_comment_list for obj %} return cls( object_expr=parser.compile_filter(tokens[2]), **extra_kw ) elif len(tokens) == 4: # {% render_comment_list for app.models pk %} return cls( ctype = BaseCommentNode.lookup_content_type(tokens[2], tokens[0]), object_pk_expr = parser.compile_filter(tokens[3]), **extra_kw ) elif len(tokens) == 5: # {% render_list_form for obj with parent_id %} if tokens[-2] != u'with': raise template.TemplateSyntaxError("%r tag must have 'with' as the last but one argument" % (tokens[0],)) return cls( object_expr=parser.compile_filter(tokens[2]), parent=parser.compile_filter(tokens[4]), **extra_kw ) elif len(tokens) == 6: # {% render_list_form for app.model object_pk with parent_id %} if tokens[-2] != u'with': raise template.TemplateSyntaxError("%r tag must have 'with' as the last but one argument" % (tokens[0],)) return cls( ctype=BaseThreadedCommentNode.lookup_content_type(tokens[2], tokens[0]), object_pk_expr=parser.compile_filter(tokens[3]), parent=parser.compile_filter(tokens[5]), **extra_kw ) else: raise template.TemplateSyntaxError("%r tag takes either 2 or 3 arguments" % (tokens[0],))
def handle_token(cls, parser, token): """ Class method to parse render_comment_form and return a Node. """ tokens = token.contents.split() if tokens[1] != 'for': raise template.TemplateSyntaxError( "Second argument in %r tag must be 'for'" % tokens[0]) if len(tokens) == 3: # {% render_comment_form for obj %} return cls(object_expr=parser.compile_filter(tokens[2])) elif len(tokens) == 4: # {% render_comment_form for app.model object_pk %} return cls(ctype=BaseCommentNode.lookup_content_type( tokens[2], tokens[0]), object_pk_expr=parser.compile_filter(tokens[3])) elif len(tokens) == 5: # {% render_comment_form for obj with parent_id %} if tokens[-2] != u'with': raise template.TemplateSyntaxError( "%r tag must have 'with' as the last but one argument" % (tokens[0], )) return cls(object_expr=parser.compile_filter(tokens[2]), parent=parser.compile_filter(tokens[4])) elif len(tokens) == 6: # {% render_comment_form for app.model object_pk with parent_id %} if tokens[-2] != u'with': raise template.TemplateSyntaxError( "%r tag must have 'with' as the last but one argument" % (tokens[0], )) return cls(ctype=BaseThreadedCommentNode.lookup_content_type( tokens[2], tokens[0]), object_pk_expr=parser.compile_filter(tokens[3]), parent=parser.compile_filter(tokens[5])) else: raise template.TemplateSyntaxError( "%r tag takes 2 to 5 arguments" % (tokens[0], ))
def handle_token(cls, parser, token): tokens = token.contents.split() if tokens[1] != 'for': raise template.TemplateSyntaxError( "Second argument in %r tag must be 'for'" % tokens[0]) extra_kw = {} if tokens[-1] in ('flat', 'root_only'): extra_kw[str(tokens.pop())] = True if len(tokens) == 3: # {% render_comment_list for obj %} return cls(object_expr=parser.compile_filter(tokens[2]), **extra_kw) elif len(tokens) == 4: # {% render_comment_list for app.models pk %} return cls(ctype=BaseCommentNode.lookup_content_type( tokens[2], tokens[0]), object_pk_expr=parser.compile_filter(tokens[3]), **extra_kw) else: raise template.TemplateSyntaxError( "%r tag takes either 2 or 3 arguments" % (tokens[0], ))
def handle_token(cls, parser, token): tokens = token.contents.split() if tokens[1] != 'for': raise template.TemplateSyntaxError("Second argument in %r tag must be 'for'" % tokens[0]) extra_kw = {} if tokens[-1] in ('flat', 'root_only'): extra_kw[str(tokens.pop())] = True if len(tokens) == 3: # {% render_comment_list for obj %} return cls( object_expr=parser.compile_filter(tokens[2]), **extra_kw ) elif len(tokens) == 4: # {% render_comment_list for app.models pk %} return cls( ctype = BaseCommentNode.lookup_content_type(tokens[2], tokens[0]), object_pk_expr = parser.compile_filter(tokens[3]), **extra_kw ) else: raise template.TemplateSyntaxError("%r tag takes either 2 or 3 arguments" % (tokens[0],))