Re: [Zope] Persisting a dictionary as a object property

2000-07-06 Thread Andy McKay

Thanks that worked like a charm!

- Original Message -
From: "Martijn Pieters" <[EMAIL PROTECTED]>
To: "Andy McKay" <[EMAIL PROTECTED]>
Cc: <[EMAIL PROTECTED]>
Sent: Wednesday, July 05, 2000 5:21 PM
Subject: Re: [Zope] Persisting a dictionary as a object property


> On Wed, Jul 05, 2000 at 04:52:44PM -0700, Andy McKay wrote:
> > Ok so I have an object, I have many properties persisting on the object
> > using the wonderful PropertyManager. But I want to persist a dictionary.
> > This isn't an option for the PropertyManager. I added a dictionary into
the
> > object just by adding the line: _map = {}
>
> You will have to let the persistance machinery know that you changed the
> dictionary. A dictionary is a mutable object, and persistance can only
track
> inmutable objects automatically. See the ZODB docs:
>
>
http://www.zope.org/Documentation/Developer/Models/ZODB/ZODB_Persistent_Obje
cts_Persistent_Doc.html
>
> (http://www.zope.org/Documentation/Developer/Models/ZODB for the framed
set,
> choose Persitent Objects, then Persitent in the bottom-left frame).
>
> You should either treat the dictionary as immutable:
>
>   data = self._map
>   data.append(foo)
>   self._map = data
>
> or set a special flag to let the ZODB know the objetc has changed:
>
>   self._map.append(foo)
>   self._p_changed = 1
>
> You could also replace the dictionary by a PersitentMapping instance. See
> above docs for more info.
>
> --
> Martijn Pieters
> | Software Engineermailto:[EMAIL PROTECTED]
> | Digital Creations  http://www.digicool.com/
> | Creators of Zope   http://www.zope.org/
> | ZopeStudio: http://www.zope.org/Products/ZopeStudio
> -
>
> ___
> Zope maillist  -  [EMAIL PROTECTED]
> http://lists.zope.org/mailman/listinfo/zope
> **   No cross posts or HTML encoding!  **
> (Related lists -
>  http://lists.zope.org/mailman/listinfo/zope-announce
>  http://lists.zope.org/mailman/listinfo/zope-dev )
>


___
Zope maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope-dev )




Re: [Zope] Persisting a dictionary as a object property

2000-07-05 Thread Martijn Pieters

On Wed, Jul 05, 2000 at 04:52:44PM -0700, Andy McKay wrote:
> Ok so I have an object, I have many properties persisting on the object
> using the wonderful PropertyManager. But I want to persist a dictionary.
> This isn't an option for the PropertyManager. I added a dictionary into the
> object just by adding the line: _map = {}

You will have to let the persistance machinery know that you changed the
dictionary. A dictionary is a mutable object, and persistance can only track
inmutable objects automatically. See the ZODB docs:

  
http://www.zope.org/Documentation/Developer/Models/ZODB/ZODB_Persistent_Objects_Persistent_Doc.html

(http://www.zope.org/Documentation/Developer/Models/ZODB for the framed set,
choose Persitent Objects, then Persitent in the bottom-left frame).

You should either treat the dictionary as immutable:

  data = self._map
  data.append(foo)
  self._map = data

or set a special flag to let the ZODB know the objetc has changed:

  self._map.append(foo)
  self._p_changed = 1

You could also replace the dictionary by a PersitentMapping instance. See
above docs for more info.

-- 
Martijn Pieters
| Software Engineermailto:[EMAIL PROTECTED]
| Digital Creations  http://www.digicool.com/
| Creators of Zope   http://www.zope.org/
| ZopeStudio: http://www.zope.org/Products/ZopeStudio
-

___
Zope maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope-dev )