Re: [Modeling-users] CustomObject.globalID() problem
Status: Abandoned
Brought to you by:
sbigaret
|
From: Sebastien B. <sbi...@us...> - 2004-10-04 15:54:07
|
Hi Delio,
no...@ti... wrote:
> Hello all,
>=20
> looking at the code for globalID() in CustomObject I see that a new EC is=
created on the fly and a globalID for self is looked up in it, question is=
(and I'm probably too asleep) how does an newly created EC know about
> a globalID of an object fetched in another EC? I would have thought some =
sort of call back in the parentObjectStore but I can't see it in the code. =
Enlight me please :)
>=20
> ciao
You were probably too asleep ;)
CustomObject.globalID() does NOT create any EC, but
1. asks self for its EC,
2. asks that ec for the object's gid
And since you're curious, here are some more: the EC stored in the
CustomObject is in fact a weakref to the real EC --that's why it is
initialized as a void lambda func BTW. That weak reference is initialized =
by
the EC when the object is registered (either newly inserted or fetched from
the db), look at EC.recordObject() if you want to see the code!
-- S=E9bastien.
PS: oh, BTW, you'll probably also note the double underscore in
'CustomObject.__editingContext'... and the ugly line:
anObject._CustomObject__editingContext=3Dweakref.ref(self)
=20=20=20=20
within EC.recordObject()
=20=20=20=20
This comes from a time when I thought some fields should not be exposed
(at least --since this is python:)-- not easily changed from the outsid=
e),
so I choose to use the private name mangling for some variables.
There are some examples of this in the framework alas, I think I'll cha=
nge
them at some point: I now tend to think that this is not very pythonic,
and that a single underscore and good documentation should be sufficient
(or, at least, use a private method _setEC() instead of that explicit n=
ame
mangling stuff in another class, isn't that supposed to be private after
all ?-/).
|