[Zope-dev] Problems with zclass and instances!!!

Edgardo Zulian ezulian@elsitio.com.ar
Fri, 3 Aug 2001 09:54:51 -0300


Perfect...thank you very much...!!!!!!!!
It works!!!! You save my life!!!!!

----- Original Message -----
From: "Tim McLaughlin" <tim@iterationzero.com>
To: <zope-dev@zope.org>; <ezulian@elsitio.com.ar>
Sent: Friday, August 03, 2001 8:34 AM
Subject: RE: [Zope-dev] Problems with zclass and instances!!!


> Edgardo,
> Have you tried accessing the __dict__ attribute of the instance in an
> External Method.  This should let you know if the attribute in question is
> being inherited or not.  Try something like this...
>
> def isOnInstance(self, name):
> if self.aq_base.__dict__.has_key(name):
> return "I've got it"
> else:
> return "My parent has it"
>
> Note: if you ever call manage_editProperties, all properties on that sheet
> will be set on the instance and not inherited.  Use
manage_changeProperties
> to only set a those specified...
>
> Tim
>
> > Message: 4
> > From: "Edgardo Zulian" <ezulian@elsitio.com.ar>
> > To: <zope-dev@zope.org>
> > Subject: [Zope-dev] Problems with zclass and instances!!!
> > Date: Thu, 2 Aug 2001 11:17:34 -0300
> >
> > Hi there:
> >
> > I have created a product 'X' with a zclass call 'X1'. This X1
> > zclass in the
> > propertysheet has a Common Instance Property Sheet called  'section'
> > (/Control_Panel/Products/X/X1/propertysheets/common/section),
> > with some
> > properties with default values:
> > ie. one of it's property is call ed  'section1' with the
> > default value 'left
> > side', the type of   this property is 'string':
> > section1  'left side'    string
> >
> > Then in the views  of  the zclass I 've  added  a method
> > "propertysheets/section/manage",
> > so when I create an instance I can enter to this propertysheet.
> >
> >
> > So the problem is here:
> >
> >  When I create an instance of this  'X1' zclass an I enter to this
> > propertysheet/section ,   I can change the default value of
> > 'section1' which
> > was 'left side' to 'center side' for example.
> >
> > But then if i change the original default value of my zclass
> > 'X1' to 'right
> > side' let say. The change will not be reflected in my
> > instance,   which is
> > okey because i have change d  the value to 'center side' before.
> >
> > Another case is when I  create another instance  of 'X1'
> > zclass   without
> > making any change to the value of 'section1'  and click on
> > save changes,
> > then if I change the default value in the zclass, the change
> > will not be
> > reflected in this instance.
> >
> > So the question is:
> >
> > There is a way to recognize when an instance will not take
> > the changes that
> > are make to the default values of a propertysheets (in this case
> > thepropertysheet 'section' )  of a zclass from which they inheritance?
> >
> >  I try with this lines in an external method, but nothing:
> >
> >    self=self._getOb('instanceTest')         # instanceTest is
> > the name of
> > the instance of the 'X1 Zclass'
> >    a=getattr(self,'meta_type')
> >    b=getattr(self.__class__,'meta_type')
> >    # in this example the answer was the same: X1
> >
> >    a=eval('self.__class__.propertysheets.section._propertyMap()')
> >    b=eval('self.propertysheets.section._propertyMap()')
> >    # the answer was again the same: {'id': 'section1', 'type':
> > 'string','meta': {}, 'mode': 'w'}
> >
> >    #I try acceding to the zclass to know if it was different from
> > theinstance...
> >
> > a=eval('self.Control_Panel.Products.X.propertysheets.common.se
> > ction.property
> > Map()')
> >    # the answer not help: {'id': 'section1', 'type':
> > 'string', 'meta': {}},
> >
> > I cannot found any property or something that help me...
> >
> > I don't know where to look or what to try next....if anybody
> > can help me
> > with this.......
> >
> > Thanks in advance
> > Edgardo
> >
>
>