﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
6237	PicklingError: Can't pickle <class 'django.template.SimpleNode'>: attribute lookup django.template.SimpleNode failed	Simon Law <simon@…>	nobody	"Code to reproduce:
{{{
import pickle
from django import template
t = template.Template(""{% load adminmedia %}{% admin_media_prefix %}"")
p = pickle.dumps(t)
print pickle.loads(p).render(template.Context({}))
}}}

Expected result:
{{{
u'/admin/media/'
}}}

Bug:
{{{
Traceback (most recent call last):
  File ""<stdin>"", line 1, in <module>
  File ""/usr/lib/python2.5/pickle.py"", line 1366, in dumps
    Pickler(file, protocol).dump(obj)
  File ""/usr/lib/python2.5/pickle.py"", line 224, in dump
    self.save(obj)
  File ""/usr/lib/python2.5/pickle.py"", line 331, in save
    self.save_reduce(obj=obj, *rv)
  File ""/usr/lib/python2.5/pickle.py"", line 419, in save_reduce
    save(state)
  File ""/usr/lib/python2.5/pickle.py"", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File ""/usr/lib/python2.5/pickle.py"", line 649, in save_dict
    self._batch_setitems(obj.iteritems())
  File ""/usr/lib/python2.5/pickle.py"", line 663, in _batch_setitems
    save(v)
  File ""/usr/lib/python2.5/pickle.py"", line 331, in save
    self.save_reduce(obj=obj, *rv)
  File ""/usr/lib/python2.5/pickle.py"", line 401, in save_reduce
    save(args)
  File ""/usr/lib/python2.5/pickle.py"", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File ""/usr/lib/python2.5/pickle.py"", line 562, in save_tuple
    save(element)
  File ""/usr/lib/python2.5/pickle.py"", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File ""/usr/lib/python2.5/pickle.py"", line 600, in save_list
    self._batch_appends(iter(obj))
  File ""/usr/lib/python2.5/pickle.py"", line 615, in _batch_appends
    save(x)
  File ""/usr/lib/python2.5/pickle.py"", line 331, in save
    self.save_reduce(obj=obj, *rv)
  File ""/usr/lib/python2.5/pickle.py"", line 401, in save_reduce
    save(args)
  File ""/usr/lib/python2.5/pickle.py"", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File ""/usr/lib/python2.5/pickle.py"", line 562, in save_tuple
    save(element)
  File ""/usr/lib/python2.5/pickle.py"", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File ""/usr/lib/python2.5/pickle.py"", line 748, in save_global
    (obj, module, name))
pickle.PicklingError: Can't pickle <class 'django.template.SimpleNode'>: it's not found as django.template.SimpleNode
}}}

Notes:
A hacky fix is attached, which preserves the semantics of SimpleNode.  Since django.template.Library.simple_tag() is the only function that uses it, this may not be the optimal solution."	Bug	closed	Template system	dev	Normal	needsinfo	pickle SimpleNode	simon@… martin@…	Accepted	1	0	0	1	0	0
