-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Vladislav Vorobiev wrote: > Thierry Florac wrote: >> Le vendredi 29 janvier 2010, >> Vladislav Vorobiev <vav...@mykniga.de> a écrit : >> ====================================================================== >> ... >> >> >>> Thierry thank you for answer but it doesn't help. >>> >>> I implement all what you sad. I tried with normal “list” and than >>> swiched to “PersistentList” >>> >>> code looks like that: >>> >>> from persistent.list import PersistentList >>> import transaction >>> >>> <snip> >>> >>> myList=PersistentList([self.context.pfad, 'object]) >>> myList = PersistentList([self.context.pfad, 'object]) #hope I >>> anderstud you right >>> >>> ob.refList= myList >>> ob._p_changed = True >>> ob.refList._p_changed = True >>> self.context._setObject(id, ob) >>> >>> After add I call again: >>> >>> ob._p_changed = True >>> ob.refList._p_changed = True >>> transaction.commit() >>> >>> I see the commitet trunsactions in ZMI >>> >>> The same problem. After restart ist the Attribut not in context. >>> >>> For example return's >>> >>> Before restart: ***1 >>> ob.refList.objectValues().absolute_url() >>> /pfad/object/FirstObjectOfReferencedObject >>> >>> After restart only the id of the object: >>> ob.refList.objectValues().absolute_url() >>> FirstObjectOfReferencedObject >>> >>> Here is a place for an other question: >>> >>> Normaly self.absolute_url() returns url with hostname, >>> (http://localhost/bla/bla) >>> but already befor restart I get without http://localhost/... see ***1 >>> >>> It seem's that I forgot something. I would be glad to if somebody >>> explain me this problem. >>> >> ====================================================================== >> >> In fact I'm not really sure to understand your data structure and it's >> goals... >> Could you explain me what you want to do ?? >> >> Thierry >> > I want to set some references from object to another object through. I try to > explain this with example classes. > > Example with two classes: > > #Create classes > >>>class School: > >>> pass > > >>>class People: > >>> pass > > #Create objects > >>>p=People() > > >>>s0=School() > >>>s0.name="Konrad School" > > >>>s1=School > >>>s1.name="Leopold School" > > Now I set the referece > > >>>p.school1=s0 > >>>p.school2=s1 > > Now I can access through the attribut to s0 and s1 objects: > > p.school1.name > “Konrad School“ > > This construction works persistent without problems. > > The idea is to put the references in a list. > > >>>p.schools=[s0,s1] > > to access them > > >>>p.schools.name > “Konrad School“ > > >>>s1.name="Leo School" > >>>p.schools.name > “Leo School“ > > >>>type(p.schools) > <type 'classobj'> > > It works in zope without restart. If the server was restartet I get some > unwanted results. See my previews posts. > The same effects I get with PersistentLists... > > I hope it is more understandable.
You can't expect to use a simple list as an attribute of a persistent object without taking special precautions. Either you have methods which mutate the list, and then set the '_p_changed' attribute to 1: def addSchool(self, school): self.schools.append(school) self._p_changed = 1 or re-assign the list attribute: def addSchool(self, school): schools = self.schools schools.append(school) self.schools = schools You shoule be able to use a PersistentList instead of a "plain" Python list to avoid the need for one of those two problems: from persistent.list import PersistentList ... class Person: def __init__(self): self.schools = PersistentList() Tres. - -- =================================================================== Tres Seaver +1 540-429-0999 tsea...@palladion.com Palladion Software "Excellence by Design" http://palladion.com -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEYEARECAAYFAktmC68ACgkQ+gerLs4ltQ7YwACgmVuBDXwBykODaN4oCavOYRAD E3MAn1QRQmlSWSnyFvahj8N9rk4+6eXJ =Vz6h -----END PGP SIGNATURE----- _______________________________________________ Zope maillist - Zope@zope.org https://mail.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - https://mail.zope.org/mailman/listinfo/zope-announce https://mail.zope.org/mailman/listinfo/zope-dev )