[Zope] Accessing .gif on disk with Python Product?

Martijn Pieters mj@digicool.com
Mon, 7 Aug 2000 17:19:39 +0200


On Mon, Aug 07, 2000 at 11:21:53AM -0300, Performance.net Strategic Internet Solutions wrote:
> I am writing a python product and want to display a GIF file in some of the
> manage_pages. It is not meant to be the "icon" property of the class, just
> an image to be included in DTML. I included it in my class as follows:
> 
>   chooser = ImageFile('images/chooser.gif',globals()),
> 
> but when I call it in DTML (<dtml-var chooser>) I get the following:
> 
>     <ImageFile instance at 014F1D90>
> 
> I thought maybe I could use an instance of the Image class:
> 
>   chooser = OFS.Image('images/chooser.gif',globals()),
> 
> but this doesn't seem to work.
> 
> How do you create an instance of an Image in a Python Product?

ImageFile objects do not (like ZODB stored Image objects) generate an IMG tag
when called. Image object, when called, generate an IMG tag that points the
browser to the correct address to retrieve tha actual image.

With an ImageFile object, you need to construct the tag yourself. If this
class has an instance foo, with this ImageFile attribute chooser, and the
instance foo is stored in the root of your Zope ZODB, you need to point the
browser to http://yoursever/foo/chooser. So your DTML needs to generate the
following HTML:

  <img src="http://yoursever/foo/chooser">

I don't know enough about your DTML, but if it is another attribute of the
same class, you could use one of the URLx REQUEST variables or something to
construct the URL for the image. Also, absolute_url() called on the foo
instance may also work for a base URL.

Hope this helps.

-- 
Martijn Pieters
| Software Engineer            mailto:mj@digicool.com
| Digital Creations          http://www.digicool.com/
| Creators of Zope               http://www.zope.org/
| ZopeStudio: http://www.zope.org/Products/ZopeStudio
-----------------------------------------------------