Re: [Zope] How To Convert Files To Page Templates?
----- Original Message ---- From: Paul Winkler <pw_lists@slinkp.com> On Tue, Nov 07, 2006 at 03:14:40AM -0800, Nancy Donnelly wrote:
That helped a lot! I yahoo'd (can't google any more since they've sold out to the interests gathering >> our personal data for Homeland Security) "put_factory" and got this code snippet:
if ext == 'dtml': from OFS.DTMLDocument import DTMLDocument
return DTMLDocument( '', __name__=name )
So...how would I rewrite that to change it into a page template? And, more importantly, where is >> the documentation to do so? Yahooing didn't help on this. I went to my Zope installation to: {INSTALLATION}/lib/python/OFS to hunt around, but no script pointing to some "PTDocument" like there is with DTML.
I think you want ZopePageTemplate from lib/python/Products/PageTemplates/
Hmm. Looking in that I find these two files that *might* be appropriate: PageTemplates.py ZopePageTemplates.py The latter is a wrapper for the former. The former defines the following class: class PageTemplate(Base): If this is the class I want to use, why only one argument? My example above cites exactly two arguments. And it is not a "base" I need to pass, is it? The latter defines the following class: class ZopePageTemplate(Script, PageTemplate, Historical, Cacheable, Traversable, PropertyManager): Why so many arguments? It doesn't look like those are any of the arguments I need to pass. None of the other files in that folder appeared to make sense, either. I confess I'm still quite green at programming, so if I'm wrong, please don't be too harsh ;) Any direction would be appreciated. TIA, Nancy
+-------[ Nancy Donnelly ]---------------------- | ----- Original Message ---- | From: Paul Winkler <pw_lists@slinkp.com> | | On Tue, Nov 07, 2006 at 03:14:40AM -0800, Nancy Donnelly wrote: | >> That helped a lot! I yahoo'd (can't google any more since they've sold out | to the interests gathering >> our personal data for Homeland Security) | "put_factory" and got this code snippet: | >> | >> if ext == 'dtml': | >> from OFS.DTMLDocument import DTMLDocument | >> | > return DTMLDocument( '', __name__=name ) | >> | >> So...how would I rewrite that to change it into a page template? And, more | importantly, where is >> the documentation to do so? Yahooing didn't help on | this. I went to my Zope installation to: | >> {INSTALLATION}/lib/python/OFS | >> to hunt around, but no script pointing to some "PTDocument" like there is | with DTML. | | > I think you want ZopePageTemplate from lib/python/Products/PageTemplates/ | | Hmm. Looking in that I find these two files that *might* be appropriate: | | PageTemplates.py | ZopePageTemplates.py | | The latter is a wrapper for the former. The former defines the following class: | | class PageTemplate(Base): | | If this is the class I want to use, why only one argument? My example above | cites exactly two arguments. And it is not a "base" I need to pass, is it? | | The latter defines the following class: | | class ZopePageTemplate(Script, PageTemplate, Historical, Cacheable, | Traversable, PropertyManager): | | Why so many arguments? It doesn't look like those are any of the arguments I | need to pass. None of the other files in that folder appeared to make sense, | either. These are not arguments, they are baseclasses. -- Andrew Milton akm@theinternet.com.au
I confess I'm still quite green at programming, so if I'm wrong, please don't be too harsh ;) Any direction would be appreciated. TIA, I'm not sure whether it is what you're looking for but it may be one of simplest solutions that you may change if you need to. As Andreas said before, ask a specific question :)
1. Log into ZMI and create a folder called 'Myfiles' 2. upload your files via FTP or something into 'Myfiles' folder and as you said before they should appear as 'File' objects 3. Create a file 'files2zpt.py' in the 'Extensions/' folder of your Zope instance (filesystem, not ZMI) and fill it with this code: #---------------- from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate def files2zpt(self): for fname, fobj in self.objectItems('File'): self._setObject(fname+'_zpt', ZopePageTemplate(fname+'_zpt', str(fobj.data))) return 'ok' #----------------- 4. Go back to ZMI and to 'Myfiles/' folder and create 'External method' there by simply filling all fields in the add form as 'files2zpt' 5. Click on your new External method files2zpt in ZMI and 'Test' it :) Thats all HTH BTW. I tested this on Zope 2.8.8 -- Maciej Wisniowski
participants (3)
-
Andrew Milton -
Maciej Wisniowski -
Nancy Donnelly