Django

Code

Ticket #5124: must_be_first.diff

File must_be_first.diff, 1.6 kB (added by k0001, 1 year ago)

adds support for a new Node property "must_be_first"

  • django/template/__init__.py

    old new  
    311311        return NodeList() 
    312312 
    313313    def extend_nodelist(self, nodelist, node, token): 
     314        if node.must_be_first and len(nodelist): 
     315            raise TemplateSyntaxError, "%r must be the first Node on the template." % node 
    314316        nodelist.append(node) 
    315317 
    316318    def enter_command(self, command, token): 
     
    780782        return current 
    781783 
    782784class Node(object): 
     785    # Set this to True if the node must be the first on a NodeList. 
     786    must_be_first = False 
     787 
    783788    def render(self, context): 
    784789        "Return the node rendered as a string" 
    785790        pass 
  • django/template/loader_tags.py

    old new  
    3737            self.parent = BlockNode(self.name, nodelist) 
    3838 
    3939class ExtendsNode(Node): 
     40    must_be_first = True 
     41 
    4042    def __init__(self, nodelist, parent_name, parent_name_expr, template_dirs=None): 
    4143        self.nodelist = nodelist 
    4244        self.parent_name, self.parent_name_expr = parent_name, parent_name_expr 
    4345        self.template_dirs = template_dirs 
    4446 
     47    def __repr__(self): 
     48        return '<ExtendsNode: %s>' % self.parent_name 
     49 
    4550    def get_parent(self, context): 
    4651        if self.parent_name_expr: 
    4752            self.parent_name = self.parent_name_expr.resolve(context)