[mod_python] StringField not pickable anymore with modpython 3.3.10

Luca Montecchiani l.montecchiani at teamsystem.com
Thu May 24 10:31:44 EDT 2007


Hi all,

in the process to convert our application from 3.2.10 to the
latest version 3.3.10 I've found a problem and an easy workaround.

In some places we need to pickle some form input data but with
the new version we can't do it anymore, the cPickle module
raise an error complain about a cStringIO object unpickability.

This was our workaround :

:
if type(v) == util.StringField:
     v = str(v)
tmp = cPickle.dumps(v,protocol=-1)
:

The same problem there is saving session objects that contain
a StringField, see the traceback:

   File "/projects/portale/20070102/ambiente/portale/core/python/lib/python2.5/site-packages/mod_python/Session.py", line 269, in save
     self.do_save(dict)

   File "/projects/portale/20070102/ambiente/portale/core/python/lib/python2.5/site-packages/mod_python/Session.py", line 407, in do_save
     dbm[self._sid] = cPickle.dumps(dict)

   File "/projects/portale/20070102/ambiente/portale/core/python/lib/python2.5/copy_reg.py", line 69, in _reduce_ex
     raise TypeError, "can't pickle %s objects" % base.__name__

   TypeError: can't pickle StringO objects

This mean that I need to convert to str() every StringField that I want
to put in a Session object :-((

Hope this help,
luca

-- 
Luca Montecchiani
Software Di Base
TeamSystem S.p.a.
------------------------------------------------------------------------------------------
Informativa ai sensi del D. Lgs. 196-30/06/2003.
Il contenuto di questa e.mail e degli eventuali allegati, deve essere nella disponibilità
del solo destinatario.  Se ricevete per errore questa e-mail siete pregati di informarci
(rispedendola al mittente) e di provvedere alla sua rimozione.
Possono essere presenti informazioni riservate e non corrette (parzialmente o totalmente).
Le e-mail in partenza e in arrivo possono essere oggetto di monitoraggio
da parte di Teamsystem spa.  Del contenuto è responsabile il mittente della presente.
Chiunque venga in possesso non autorizzato di questa e-mail è vincolato
dalla Legge a non leggerne il contenuto, a non copiarla, a non diffonderla e a non usarla.
Informiamo che per l' esercizio dei diritti di cui all'art. 7 del d.lgs.196/2003 ci si può
rivolgere al Titolare del trattamento Teamsystem S.r.l. via Gagarin 205 61100 PESARO
per posta o fax, indicando sulla busta o sul foglio la dicitura "Inerente alla Privacy",
o inviando una e-mail all' indirizzo privacy at teamsystem.com .
------------------------------------------------------------------------------------------


More information about the Mod_python mailing list