Andreas Jung wrote:
--On 7. Januar 2008 18:29:50 +0000 Peter Bengtsson <[EMAIL PROTECTED]>
wrote:
My code works fine in normal running zope but not when run as a testcase
(I'm not using bin/zopectl test if that matters) I get the following
error.
I feel guilty since I've got this line in my code:
transaction.get().commit() (Expense.py#4458)
I remember having come across this error before but can't remember what
the solution was.
----------------------------------------------------------------------
Traceback (most recent call last):
File
"/home/peterbe/zope/zope285/lib/python/Testing/ZopeTestCase/profiler.py",
line 98, in __call__
testMethod()
File "testExpenses2.py", line 81, in test_uploadPhotos
eids = context.uploadExpenseFiles(files)
File "/home/peterbe/zope/zope285/Products/MExpenses/Expense.py", line
4458, in uploadExpenseFiles
transaction.get().commit()
File "lib/python/transaction/_transaction.py", line 381, in commit
File "lib/python/transaction/_transaction.py", line 379, in commit
File "lib/python/transaction/_transaction.py", line 424, in
_commitResources
File "/home/peterbe/zope/zope285/lib/python/ZODB/Connection.py", line
462, in commit
self._commit(transaction)
File "/home/peterbe/zope/zope285/lib/python/ZODB/Connection.py", line
503, in _commit
self._store_objects(ObjectWriter(obj), transaction)
File "/home/peterbe/zope/zope285/lib/python/ZODB/Connection.py", line
525, in _store_objects
p = writer.serialize(obj) # This calls __getstate__ of obj
File "/home/peterbe/zope/zope285/lib/python/ZODB/serialize.py", line
330, in serialize
return self._dump(meta, obj.__getstate__())
File "/home/peterbe/zope/zope285/lib/python/ZODB/serialize.py", line
339, in _dump
self._p.dump(state)
File "copy_reg.py", line 69, in _reduce_ex
raise TypeError, "can't pickle %s objects" % base.__name__
TypeError: can't pickle instancemethod objects
Well, this error is self-speaking :-)
The standard solution for figuring out the related property/attr keeping
the instancemethod is: pdb. Look at the object or its __dict__ and check
what is
inside or think about your code where you might be assigning a method
somewhere.
Damn it! Not the answer I was hoping for. I was hoping for something
simpler and more obvious :)
What object do you suggest I inspect in the debugger then? I don't know
how the ZODB figures out what it needs to save.
--
Peter Bengtsson,
work www.fry-it.com
home www.peterbe.com
hobby www.issuetrackerproduct.com
_______________________________________________
Zope maillist - Zope@zope.org
http://mail.zope.org/mailman/listinfo/zope
** No cross posts or HTML encoding! **
(Related lists -
http://mail.zope.org/mailman/listinfo/zope-announce
http://mail.zope.org/mailman/listinfo/zope-dev )