Problems with zclass and instances!!
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.section.propertyMap()') # 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
Edgardo Zulian writes:
... Z Instance property no longer follows Z Class default value, after it has been written once, even if written with the former "default" value ... ... how to detect, whether overwritten? .... You can not do it in DTML or Python Script or other TTW contexts.
In an External Method (or other non-TTW contexts), you can use: instance.__dict__.has_key('property_name') If this expression returns a true value, then your "instance"'s property value has been written and will no longer follow a change in the class's default value. You can then use: del instance.property_name to revert to the previous state (inheriting the default) Dieter
participants (2)
-
Dieter Maurer -
Edgardo Zulian