[Zope] changing the meta_type for python product class
Dragos Chirila
objectvalues at gmail.com
Wed Dec 6 08:48:16 EST 2006
Hi everybody,
I am stuck with the following problem for witch I don't have a
solution. I would appreciate it very much if you could help me with
it.
I have a very simple Python product with only one class that extends
Folder. The name of the product is MyClass and the MyClass.py module
is below:
from OFS.Folder import Folder
from Products.PageTemplates.PageTemplateFile import PageTemplateFile
from constants import *
manage_addMyClass_html = PageTemplateFile('zpt/myclass_manage_add', globals())
def manage_addMyClass(self, id, title='', REQUEST=None):
""" """
ob = MyClass(id, title)
self._setObject(id, ob)
if REQUEST:
return self.manage_main(self, REQUEST, update_menu=1)
class MyClass(Folder):
""" """
meta_type = METATYPE_MYCLASS
def __init__(self, id, title):
#constructor
self.id = id
self.title = title
And the constants.py module contains:
import Globals
MYCLASS_PRODUCT_NAME = 'MyClass'
MYCLASS_PRODUCT_PATH = Globals.package_home(globals())
METATYPE_MYCLASS = 'My Class'
PERMISSION_ADD_MYCLASS = 'MyClass - Add Components'
In the ROOT folder I create the following python script (listing):
for x in container.objectValues(['My Class']):
print '[%s] - [%s]' % (x.meta_type, x.absolute_url())
return printed
Then I follow the steps:
1. Create an instance with the id 'instance1' (in the drop down I have
'My Class').
2. I run the 'listing' script and I get:
[My Class] - [http://10.0.0.37:8080/instance1]
3. I change the constant METATYPE_MYCLASS into 'My New Class'
4. I run the 'listing' script and I get:
[My New Class] - [http://10.0.0.37:8080/instance1]
5. I create a second instance with the id 'instance2' (in the drop
down I have 'My New Class').
6. I run the 'listing' script and I get:
[My New Class] - [http://10.0.0.37:8080/instance1]
7. I modify the python script by changing the 'My Class' with 'My New Class'
8. I run the 'listing' script and I get:
[My New Class] - [http://10.0.0.37:8080/instance2]
In the ZMI for both instances the meta_type 'My New Class' is
displayed. I don't understand why the first instance is not displayed
after I change the meta_type value in the python Product.
Moreover, if I try to explicit update the meta_type property for the
first instance to the new value, the result is the same.
What I am trying to accomplish is to be able to change the meta_type
value and this to work (e.g. with no effect on python scripts like
'listing')
Thank you very much,
Dragos
More information about the Zope
mailing list