Skip to content

Commit

Permalink
Fixed #19846 -- Optimized a dict of lists in BlockContext class
Browse files Browse the repository at this point in the history
Thanks Curtis Maloney for the report and the patch.
  • Loading branch information
claudep committed Feb 22, 2013
1 parent f565c6f commit e5a8df0
Showing 1 changed file with 6 additions and 7 deletions.
13 changes: 6 additions & 7 deletions django/template/loader_tags.py
@@ -1,3 +1,5 @@
from collections import defaultdict

from django.conf import settings
from django.template.base import TemplateSyntaxError, Library, Node, TextNode,\
token_kwargs, Variable
Expand All @@ -15,19 +17,16 @@ class ExtendsError(Exception):
class BlockContext(object):
def __init__(self):
# Dictionary of FIFO queues.
self.blocks = {}
self.blocks = defaultdict(list)

def add_blocks(self, blocks):
for name, block in six.iteritems(blocks):
if name in self.blocks:
self.blocks[name].insert(0, block)
else:
self.blocks[name] = [block]
self.blocks[name].insert(0, block)

def pop(self, name):
try:
return self.blocks[name].pop()
except (IndexError, KeyError):
except IndexError:
return None

def push(self, name, block):
Expand All @@ -36,7 +35,7 @@ def push(self, name, block):
def get_block(self, name):
try:
return self.blocks[name][-1]
except (IndexError, KeyError):
except IndexError:
return None

class BlockNode(Node):
Expand Down

0 comments on commit e5a8df0

Please sign in to comment.