<div dir="ltr"><div><div><div>You solved my problem.<br><br>After correcting the idiomatic errors and storing the customer ID only, the error doesn't appear anymore.<br><br></div>Do you have please an explanation ?<br><br></div>Regards<br></div>Simon Elbaz<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Oct 14, 2014 at 1:21 PM, Marius Gedminas <span dir="ltr"><<a href="mailto:marius@gedmin.as" target="_blank">marius@gedmin.as</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Tue, Oct 14, 2014 at 12:13:56AM +0200, Simon Elbaz wrote:<br>
> Hi,<br>
><br>
> Could someone explain me why the following code:<br>
><br>
>     if ISession(self.request)['cdc_adama'].__contains__('current_customer'):<br>
>         ISession(self.request)['cdc_adama'].__delitem__('current_customer')<br>
>     ISession(self.request)['cdc_adama']['current_customer'] = customer<br>
<br>
</span>First, a style issue: please don't use __contains__ or __delitem__ this<br>
way.  Use the idiomatic Python spelling:<br>
<br>
    if 'current_customer' in ISession(self.request)['cdc_adama']:<br>
        del ISession(self.request)['cdc_adama']['current_customer']<br>
<span class="">    ISession(self.request)['cdc_adama']['current_customer'] = customer<br>
<br>
> triggers the error:<br>
><br>
>   File<br>
> "/home/simon/ADAMA/Src/gui/z3c_dunning/eggs/ZODB-4.0.0a4-py2.7.egg/ZODB/serialize.py",<br>
> line 352, in persistent_id<br>
>     "database connection", self._jar, obj,<br>
> InvalidObjectReference: ('Attempt to store an object from a foreign<br>
> database connection', <Connection at 7966348c>,<br>
> <zope.container.btree.BTreeContainer object at 0x7a61282c>)<br>
><br>
> Is the zope.session module opening a new ZODB connection ?<br>
<br>
</span>It's not about different ZODB connections.  It's about objects being<br>
stored in different databases.  And that depends on how your session<br>
storage is configured in your application.  For example, if you use<br>
RAMSessionDataContainer then session data lives in a memory-only<br>
MappingStorage.<br>
<br>
Perhaps you can store just the customer ID instead of the entire object?<br>
<br>
Regards,<br>
Marius Gedminas<br>
<span class="HOEnZb"><font color="#888888">--<br>
<a href="http://pov.lt/" target="_blank">http://pov.lt/</a> -- Zope 3/BlueBream consulting and development<br>
</font></span><br>_______________________________________________<br>
Zope-Dev maillist  -  <a href="mailto:Zope-Dev@zope.org">Zope-Dev@zope.org</a><br>
<a href="https://mail.zope.org/mailman/listinfo/zope-dev" target="_blank">https://mail.zope.org/mailman/listinfo/zope-dev</a><br>
**  No cross posts or HTML encoding!  **<br>
(Related lists -<br>
 <a href="https://mail.zope.org/mailman/listinfo/zope-announce" target="_blank">https://mail.zope.org/mailman/listinfo/zope-announce</a><br>
 <a href="https://mail.zope.org/mailman/listinfo/zope" target="_blank">https://mail.zope.org/mailman/listinfo/zope</a> )<br>
<br></blockquote></div><br></div>