#12769: Pickle fails if fields have lazy verbose name translations
------------------------------------------+---------------------------------
 Reporter:  jtiai                         |       Owner:  nobody    
   Status:  new                           |   Milestone:            
Component:  Database layer (models, ORM)  |     Version:  SVN       
 Keywords:  orm pickle query              |       Stage:  Unreviewed
Has_patch:  0                             |  
------------------------------------------+---------------------------------
 If declared model as:

 {{{
 from django.db import models
 from django.utils.translation import ugettext_lazy as _

 class TestModel(models.Model):
     name = models.CharField(_('name'), max_length=12)
 }}}

 Using query pickle like:

 {{{
 from models import TestModel
 import pickle

 qs = TestModel.objects.filter(name__contains='foobar')

 s = pickle.dumps(qs.query)
 }}}

 Fails with exception:
 {{{
 Traceback (most recent call last):
   File "/home/KEYPRO/jtiai/src/django-
 tests/pickle_error/showcase/tests.py", line 15, in test_pickle_query
     s = pickle.dumps(qs.query)
   File "/usr/lib/python2.6/pickle.py", line 1366, in dumps
     Pickler(file, protocol).dump(obj)
   File "/usr/lib/python2.6/pickle.py", line 224, in dump
     self.save(obj)
   File "/usr/lib/python2.6/pickle.py", line 331, in save
     self.save_reduce(obj=obj, *rv)
   File "/usr/lib/python2.6/pickle.py", line 419, in save_reduce
     save(state)
   File "/usr/lib/python2.6/pickle.py", line 286, in save
     f(self, obj) # Call unbound method with explicit self
   File "/usr/lib/python2.6/pickle.py", line 649, in save_dict
     self._batch_setitems(obj.iteritems())
   File "/usr/lib/python2.6/pickle.py", line 663, in _batch_setitems
     save(v)
   File "/usr/lib/python2.6/pickle.py", line 331, in save
     self.save_reduce(obj=obj, *rv)
   File "/usr/lib/python2.6/pickle.py", line 419, in save_reduce
     save(state)
   File "/usr/lib/python2.6/pickle.py", line 286, in save
     f(self, obj) # Call unbound method with explicit self
   File "/usr/lib/python2.6/pickle.py", line 649, in save_dict
     self._batch_setitems(obj.iteritems())
   File "/usr/lib/python2.6/pickle.py", line 663, in _batch_setitems
     save(v)
   File "/usr/lib/python2.6/pickle.py", line 286, in save
     f(self, obj) # Call unbound method with explicit self
   File "/usr/lib/python2.6/pickle.py", line 600, in save_list
     self._batch_appends(iter(obj))
   File "/usr/lib/python2.6/pickle.py", line 615, in _batch_appends
     save(x)
   File "/usr/lib/python2.6/pickle.py", line 286, in save
     f(self, obj) # Call unbound method with explicit self
   File "/usr/lib/python2.6/pickle.py", line 562, in save_tuple
     save(element)
   File "/usr/lib/python2.6/pickle.py", line 331, in save
     self.save_reduce(obj=obj, *rv)
   File "/usr/lib/python2.6/pickle.py", line 419, in save_reduce
     save(state)
   File "/usr/lib/python2.6/pickle.py", line 286, in save
     f(self, obj) # Call unbound method with explicit self
   File "/usr/lib/python2.6/pickle.py", line 649, in save_dict
     self._batch_setitems(obj.iteritems())
   File "/usr/lib/python2.6/pickle.py", line 663, in _batch_setitems
     save(v)
   File "/usr/lib/python2.6/pickle.py", line 331, in save
     self.save_reduce(obj=obj, *rv)
   File "/usr/lib/python2.6/pickle.py", line 419, in save_reduce
     save(state)
   File "/usr/lib/python2.6/pickle.py", line 286, in save
     f(self, obj) # Call unbound method with explicit self
   File "/usr/lib/python2.6/pickle.py", line 649, in save_dict
     self._batch_setitems(obj.iteritems())
   File "/usr/lib/python2.6/pickle.py", line 663, in _batch_setitems
     save(v)
   File "/usr/lib/python2.6/pickle.py", line 331, in save
     self.save_reduce(obj=obj, *rv)
   File "/usr/lib/python2.6/pickle.py", line 401, in save_reduce
     save(args)
   File "/usr/lib/python2.6/pickle.py", line 286, in save
     f(self, obj) # Call unbound method with explicit self
   File "/usr/lib/python2.6/pickle.py", line 562, in save_tuple
     save(element)
   File "/usr/lib/python2.6/pickle.py", line 286, in save
     f(self, obj) # Call unbound method with explicit self
   File "/usr/lib/python2.6/pickle.py", line 748, in save_global
     (obj, module, name))
 PicklingError: Can't pickle <class 'django.utils.functional.__proxy__'>:
 it's not found as django.utils.functional.__proxy__
 }}}

 This works perfectly with 1.1.1 so it must be a regression.

-- 
Ticket URL: <http://code.djangoproject.com/ticket/12769>
Django <http://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en.

Reply via email to