Re: [Zope] Adding a ZPT when adding product instance
I use something like this to add a DTML Method inside of my folderish product:
# Add default interface index_html = HTMLFile('dtml/index_html', globals()) text = index_html.read_raw() ob.manage_addDTMLMethod(id='index_html', title='') idx = ob.index_html idx.manage_edit(text, title='')
the source for the index_html file is in the dtml folder in my product, and is called index_html.dtml
Is this the correct Zope idiom? How can I do something similar for ZPT?
It is similar for ZPT.
ZPT use the "official" creation method (not an abbreviated form like DTML). It looks like:
ob.manage_addProduct['PageTemplates'].manage_addPageTemplate( id, title, text)
"PageTemplateFile" is the correspondence for "HTMLFile". However, I would directly read the file content (with Python's "open" followed by "read") and pass it as "text" to the constructor.
Ok. That was actually my first thought, but how do I find the directory in which my product? This is how I have done it ... dirname = os.path.dirname(__file__) zpt = os.path.join(dirname, 'zpt') index_html = open(os.path.join(zpt, 'index_html.zpt')) text = index_html.read() ob.manage_addProduct['PageTemplates'].manage_addPageTemplate( 'index_html', '', text) I could not find PageTemplateFile from my script... it is not in Globals with HTMLFile. I also found package_home in Globals while looking through ZopePageTemplate.py but I am not quite sure how to use it. Thank you for your time. _________________________________________________________________ MSN 8 helps eliminate e-mail viruses. Get 2 months FREE*. http://join.msn.com/?page=features/virus
Lee Harr wrote at 2004-1-10 15:33 +0000:
... reading product related file ... Ok. That was actually my first thought, but how do I find the directory in which my product? This is how I have done it ...
dirname = os.path.dirname(__file__) zpt = os.path.join(dirname, 'zpt') index_html = open(os.path.join(zpt, 'index_html.zpt'))
There is a "package_home" function defined in "App.Common" (available via "Global") which can determine the package directory in many cases.
... I could not find PageTemplateFile from my script... it is not in Globals with HTMLFile.
It is in "Products.PageTemplates.PageTemplateFile".
I also found package_home in Globals while looking through ZopePageTemplate.py but I am not quite sure how to use it.p
You pass "globals()" as argument. -- Dieter
participants (2)
-
Dieter Maurer -
Lee Harr