Re: [Zope] Render a string as tal
Alan Warren wrote: On 11/18/05, Chris Withers [EMAIL PROTECTED] wrote: Alan Warren wrote: single image into a folder. So, I have a folder called view. When an image is viewed the URL looks like /some_album/some_pic.jpg/view/?display=large The code looks like this: span tal:define=imgName python:request['URL2'][len(request['URL3']+1:] span tal:define=global imgObj python:path('here/'+imgName)/span /span ouch. Thanks. This is really contorted. Why do you use URL2 and URL3? To extract just the id of the image being viewed. The relative path from the template that presents the image to the image being presented will always match that pattern. *cries* Is imgObj not just 'here' anyway? Not in a manner I could easily work with, view is a folder containing index_html (the page template in question), and a handful of other page templates and scripts -- all of which are specific actions a user may wish to perform on a single image -- rather than on a whole album. *sigh* I can see why you want this, but I'd loose the 'view' folder and just have the methods somewhere acquirable... in fact, I'd just rename your index_html to 'view'. Then you can just replace all instances of imgObj with 'context' Why do you do a global define? Because I'm godless. huh? The question I was trying to answer wasn't about some coding style issue, but rather about how to convert a string path to an object at run-time. You should very rarely have to do this. If you end up doing this, big alarm belsl should start ringing ;-) cheers, Chris -- Simplistix - Content Management, Zope Python Consulting - http://www.simplistix.co.uk ___ Zope maillist - Zope@zope.org http://mail.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope-dev )
Re: [Zope] Render a string as tal
Alan Warren wrote: single image into a folder. So, I have a folder called view. When an image is viewed the URL looks like /some_album/some_pic.jpg/view/?display=large The code looks like this: span tal:define=imgName python:request['URL2'][len(request['URL3']+1:] span tal:define=global imgObj python:path('here/'+imgName)/span /span ouch. This is really contorted. Why do you use URL2 and URL3? Is imgObj not just 'here' anyway? What is the page template where this code comes from called? Why do you do a global define? Why two define statements instead of just one? Chris -- Simplistix - Content Management, Zope Python Consulting - http://www.simplistix.co.uk ___ Zope maillist - Zope@zope.org http://mail.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope-dev )
Re: [Zope] Render a string as tal
On 11/18/05, Chris Withers [EMAIL PROTECTED] wrote: Alan Warren wrote: single image into a folder. So, I have a folder called view. When an image is viewed the URL looks like /some_album/some_pic.jpg/view/?display=large The code looks like this: span tal:define=imgName python:request['URL2'][len(request['URL3']+1:] span tal:define=global imgObj python:path('here/'+imgName)/span /span ouch. Thanks. This is really contorted. Why do you use URL2 and URL3? To extract just the id of the image being viewed. The relative path from the template that presents the image to the image being presented will always match that pattern. Is imgObj not just 'here' anyway? Not in a manner I could easily work with, view is a folder containing index_html (the page template in question), and a handful of other page templates and scripts -- all of which are specific actions a user may wish to perform on a single image -- rather than on a whole album. Given the scenario I've outlined, do you have another suggestion? I agree this isn't aesthetically pleasing, but to me it was quite intuitive. What is the page template where this code comes from called? /view/index_html Why do you do a global define? Because I'm godless. Why two define statements instead of just one? So as to not post a massively long line of code to the list that would be even more spaghetti like. If it makes you feel any better the actual code is more in the form: div tal:define=long_line here !-- code that works on imgObj properties, -- /div The question I was trying to answer wasn't about some coding style issue, but rather about how to convert a string path to an object at run-time. I included the URL manipulation as an illustration of when I had to use the path method. Cheers, Alan ___ Zope maillist - Zope@zope.org http://mail.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope-dev )
Re: [Zope] Render a string as tal
Mark Gibson wrote: However, what I'm looking for is being able to take a string such as 'div tal:content=here/absolute_urlThe url/div' and be able to evaluate the TALES expression in the string to produced something like: 'divhttp://mydomain.com/theUrl/div' Any chance there's a recipe for this? If you can explain to us why you think you want to do that, we can likely tell you what you really want to be doing ;-) Chris -- Simplistix - Content Management, Zope Python Consulting - http://www.simplistix.co.uk ___ Zope maillist - Zope@zope.org http://mail.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope-dev )
Re: [Zope] Render a string as tal
Hi, I'm not sure I entirely understand the goal here either, but you may want to look into the path method. Here's what I recently had to use it for. I'm building a little photo album application for my sister, it supports nested albums. I had a page template called view I was using as a method, but wanted to logically group the actions specific to a single image into a folder. So, I have a folder called view. When an image is viewed the URL looks like /some_album/some_pic.jpg/view/?display=large If I want to do operations or locate properties on some_pic.jpg I extract that part of the URL, and then pass it to the path function. The code looks like this: span tal:define=imgName python:request['URL2'][len(request['URL3']+1:] span tal:define=global imgObj python:path('here/'+imgName)/span /span HTH, Alan On 11/16/05, Chris Withers [EMAIL PROTECTED] wrote: Mark Gibson wrote: However, what I'm looking for is being able to take a string such as 'div tal:content=here/absolute_urlThe url/div' and be able to evaluate the TALES expression in the string to produced something like: 'divhttp://mydomain.com/theUrl/div' Any chance there's a recipe for this? If you can explain to us why you think you want to do that, we can likely tell you what you really want to be doing ;-) Chris -- Simplistix - Content Management, Zope Python Consulting - http://www.simplistix.co.uk ___ Zope maillist - Zope@zope.org http://mail.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope-dev ) ___ Zope maillist - Zope@zope.org http://mail.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope-dev )
Re: [Zope] Render a string as tal
Paul Winkler wrote: On Mon, Nov 14, 2005 at 01:19:18PM -0700, Mark Gibson wrote: I would like to be able to render an arbitrary string as tal, having the tal statements evaluated correctly. How would I go about doing this? I assume you mean TALES expressions. See: http://zopelabs.com/cookbook/1037762730 He might mean a full blown page template of course ;-) ...in which case he probably wants to instantiate a ZPT and execute it, but that feels horribly expensive, unless it's persisted somewhere like the ZODB. Mark, what are you actually trying to do here? ;-) Chris -- Simplistix - Content Management, Zope Python Consulting - http://www.simplistix.co.uk ___ Zope maillist - Zope@zope.org http://mail.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope-dev )
Re: [Zope] Render a string as tal
Mark Gibson wrote at 2005-11-14 13:19 -0700: I would like to be able to render an arbitrary string as tal, having the tal statements evaluated correctly. How would I go about doing this? You create a Products.PageTemplates.ZopePageTemplate.ZopePageTemplate with the string as text, put it into the acquisition context by a call to its __of__(context) method (this defines 'here', 'container', 'request', ...) and then call it. You can do this in trusted code only... -- Dieter ___ Zope maillist - Zope@zope.org http://mail.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope-dev )
Re: [Zope] Render a string as tal
On Mon, 2005-11-14 at 13:38, Paul Winkler wrote: On Mon, Nov 14, 2005 at 01:19:18PM -0700, Mark Gibson wrote: I would like to be able to render an arbitrary string as tal, having the tal statements evaluated correctly. How would I go about doing this? I assume you mean TALES expressions. See: http://zopelabs.com/cookbook/1037762730 Thanks for your suggestion. This has shed some light on the subject. However, what I'm looking for is being able to take a string such as 'div tal:content=here/absolute_urlThe url/div' and be able to evaluate the TALES expression in the string to produced something like: 'divhttp://mydomain.com/theUrl/div' Any chance there's a recipe for this? -- Mark Gibson [EMAIL PROTECTED] ___ Zope maillist - Zope@zope.org http://mail.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope-dev )
Re: [Zope] Render a string as tal
On Tue, Nov 15, 2005 at 06:20:39PM -0700, Mark Gibson wrote: On Mon, 2005-11-14 at 13:38, Paul Winkler wrote: On Mon, Nov 14, 2005 at 01:19:18PM -0700, Mark Gibson wrote: I would like to be able to render an arbitrary string as tal, having the tal statements evaluated correctly. How would I go about doing this? I assume you mean TALES expressions. See: http://zopelabs.com/cookbook/1037762730 Thanks for your suggestion. This has shed some light on the subject. However, what I'm looking for is being able to take a string such as 'div tal:content=here/absolute_urlThe url/div' and be able to evaluate the TALES expression in the string to produced something like: 'divhttp://mydomain.com/theUrl/div' Any chance there's a recipe for this? Hmm. If you want TAL statements and all, I suspect you'll have to do as Chris suggested and instantiate a full-blown page template on the fly. I've never done that, if I were going to try I'd probably just start looking at the code in lib/python/Products/PageTemplates. You might be able to instantiate a PageTemplate rather than a ZopePageTemplate, which would be somewhat lighter as it leaves out a lot of stuff you surely don't care about (FTP support, ZMI management tabs, etc). -- Paul Winkler http://www.slinkp.com ___ Zope maillist - Zope@zope.org http://mail.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope-dev )
Re: [Zope] Render a string as tal
On Mon, Nov 14, 2005 at 01:19:18PM -0700, Mark Gibson wrote: I would like to be able to render an arbitrary string as tal, having the tal statements evaluated correctly. How would I go about doing this? I assume you mean TALES expressions. See: http://zopelabs.com/cookbook/1037762730 -- Paul Winkler http://www.slinkp.com ___ Zope maillist - Zope@zope.org http://mail.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope-dev )