Filesystem Page Template lowercase-ifying all my tags
I have a product that installs some filesystem page templates into a plone site's portal_skins. The templates are exactly the same as their created-through-ZMI counterparts, yet the filesystem templates render with all their tags lower-cased, whereas the ZMI-created templates preserve case. Why is this happening? Zope 2.7.7-final, python 2.3.5, freebsd5 Page Templates 1.4.0 Thanks! fm
An update - It appears as though this problem is due to the content-type being set inappropriately (probably text/html). I'm attempting to render XML, but each of the templates only contains a piece of my final output XML file; therefore, I don't have the '<?xml ... ?>' header in the file.
From a perusal of the source for FSPageTemplate, this appears to be the only way to get the Content-Type set to 'text/xml'. Basically, I'm constructing a VERY large XML file using a python script that buffers writes to REQUEST.RESPONSE. The script calls the page templates, and then writes the rendered page templates to REQUEST.RESPONSE through the buffering mechanism.
I have attempted adding .metadata files for each of my templates, with the following content: ---8<------ [default] content_type=text/xml ---8<------ It didn't work. I'm still at a loss for how to make this all happen, I can't have my XML tags get lower-case-ified. Please help! Zope 2.7.7-final, python 2.3.5, freebsd5 Page Templates 1.4.0 CMF 1.4.8 fm On 10/25/05, Floyd May <fmay@okcareertech.org> wrote:
I have a product that installs some filesystem page templates into a plone site's portal_skins. The templates are exactly the same as their created-through-ZMI counterparts, yet the filesystem templates render with all their tags lower-cased, whereas the ZMI-created templates preserve case. Why is this happening?
Zope 2.7.7-final, python 2.3.5, freebsd5 Page Templates 1.4.0
Thanks! fm
On 10/26/05, Floyd May <fmay@okcareertech.org> wrote:
It appears as though this problem is due to the content-type being set inappropriately (probably text/html). I'm attempting to render XML, but each of the templates only contains a piece of my final output XML file; therefore, I don't have the '<?xml ... ?>' header in the file. From a perusal of the source for FSPageTemplate, this appears to be the only way to get the Content-Type set to 'text/xml'. Basically,
Unfortunately, that's true for the current code. Julien Anguenot and I started working on this problem (along with some other aspects of the XML vs. HTML behavior) based on the Zope 3 implementation for page templates. The work isn't done yet, though the aspect you're interested in is pretty straightforward. That's only for the Zope 3 version of the code, however. For now, your best bet may be to subclass the PageTemplateFile class (or whichever derived class of that that's relevant to you) and override the _cook_check() method to do what you need it to do. If you're using a file-system view, you likely need to arrange for your new class to be used for some new filename extension; I'm not sure how to arrange for that. -Fred -- Fred L. Drake, Jr. <fdrake at gmail.com> "Society attacks early, when the individual is helpless." --B.F. Skinner
I found a way to hack around it. It's definitely ugly, though. Basically, I have a python script that calls page templates and buffers the results as it writes out to REQUEST.RESPONSE. Each page template is *just a portion* of my final output XML file. Since all of the scripts and templates that I'm using are read from the filesystem, they are the filesystem-equivalents to the ZODB-stored objects. Specifically, I discovered that the FSPageTemplate from CMFCore will set the content_type attribute on the object to 'text/xml' if the file begins with '<?xml'. Otherwise, when it sees the xml-or-html-looking content, it assumes a content_type of 'text/html', which lowercases all the tags. So I added an xml header to all of my page templates, and I strip it back out inside the python script that calls the template (so that I don't have the XML header repeated over and over in my final output XML file). Ugly, yes, but it does work. fm On 10/26/05, Fred Drake <fdrake@gmail.com> wrote:
On 10/26/05, Floyd May <fmay@okcareertech.org> wrote:
It appears as though this problem is due to the content-type being set inappropriately (probably text/html). I'm attempting to render XML, but each of the templates only contains a piece of my final output XML file; therefore, I don't have the '<?xml ... ?>' header in the file. From a perusal of the source for FSPageTemplate, this appears to be the only way to get the Content-Type set to 'text/xml'. Basically,
Unfortunately, that's true for the current code. Julien Anguenot and I started working on this problem (along with some other aspects of the XML vs. HTML behavior) based on the Zope 3 implementation for page templates. The work isn't done yet, though the aspect you're interested in is pretty straightforward.
That's only for the Zope 3 version of the code, however. For now, your best bet may be to subclass the PageTemplateFile class (or whichever derived class of that that's relevant to you) and override the _cook_check() method to do what you need it to do. If you're using a file-system view, you likely need to arrange for your new class to be used for some new filename extension; I'm not sure how to arrange for that.
-Fred
-- Fred L. Drake, Jr. <fdrake at gmail.com> "Society attacks early, when the individual is helpless." --B.F. Skinner
Floyd May wrote:
I'm constructing a VERY large XML file using a python script that buffers writes to REQUEST.RESPONSE. The script calls the page templates, and then writes the rendered page templates to REQUEST.RESPONSE through the buffering mechanism.
I have attempted adding .metadata files for each of my templates, with the following content: ---8<------ [default] content_type=text/xml ---8<------ It didn't work. I'm still at a loss for how to make this all happen, I can't have my XML tags get lower-case-ified. Please help!
Zope 2.7.7-final, python 2.3.5, freebsd5 Page Templates 1.4.0 CMF 1.4.8
Yes, it's a bug in CMF 1.4's parsing of FSPageTemplates that stomps on the content type and sets it back to text/html every time. Can you upgrade to CMF 1.5? cheers, Chris -- Simplistix - Content Management, Zope & Python Consulting - http://www.simplistix.co.uk
participants (3)
-
Chris Withers -
Floyd May -
Fred Drake