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