# HG changeset patch
# User Simon Law <simon@akoha.org>
# Date 1197999869 18000
# Branch trunk
# Node ID a742eea27d06087ce019c4564967bd3883b91c4c
# Parent  6636f16ed3195d7021d339598a3b229e5ae6553e
Allow pickling of django.template.SimpleNode objects.

diff --git a/django/template/__init__.py b/django/template/__init__.py
--- a/django/template/__init__.py
+++ b/django/template/__init__.py
@@ -890,6 +890,15 @@ def generic_tag_compiler(params, default
         raise TemplateSyntaxError, message
     return node_class(bits)
 
+class SimpleNode(Node):
+    def __init__(self, vars_to_resolve, func):
+        self.vars_to_resolve = map(Variable, vars_to_resolve)
+        self.func = func
+
+    def render(self, context):
+        resolved_vars = [var.resolve(context) for var in self.vars_to_resolve]
+        return self.func(*resolved_vars)
+
 class Library(object):
     def __init__(self):
         self.filters = {}
@@ -946,13 +955,10 @@ class Library(object):
     def simple_tag(self,func):
         params, xx, xxx, defaults = getargspec(func)
 
-        class SimpleNode(Node):
-            def __init__(self, vars_to_resolve):
-                self.vars_to_resolve = map(Variable, vars_to_resolve)
-
-            def render(self, context):
-                resolved_vars = [var.resolve(context) for var in self.vars_to_resolve]
-                return func(*resolved_vars)
+        def SimpleNode__init__(self, vars_to_resolve):
+            self.vars_to_resolve = map(Variable, vars_to_resolve)
+            self.func = func
+        SimpleNode.__init__ = SimpleNode__init__
 
         compile_func = curry(generic_tag_compiler, params, defaults, getattr(func, "_decorated_function", func).__name__, SimpleNode)
         compile_func.__doc__ = func.__doc__
