Terry Hancock wrote:
* I want to return the PNG Image (i.e. a block of data * * with mime type 'image/png'), NOT an HTML image tag * * containing a reference to result_image . *
Is it possible that it matters whether I'm using __getattr__ or a python method to return this?
OKAY. This is the critical difference -- I just found that out by testing. However, I still think it would be very edifying to hear someone explain why. :) I can see that there *is* a distinction here between the return value for the __getattr__ method and a fixed Python method, but I don't really understand it. To recap and (hopefully) clarify, the problem: class MyTestClass(OFS.SimpleItem.SimpleItem): def __getattr__(self, keystr): "Access my data by catching the attribute lookup" # Decode keystr and catch a URL: try: if keystr != 'Foo' : raise AttribError # omitted PIL code to read and convert an image # which is now stored in self.result_image return self.result_image except: OFS.SimpleItem.SimpleItem.__getattr__(keystr) def Foo2(self): "Direct access by Python method" # omitted PIL code to read and convert an image # which is now stored in self.result_image # (i.e. same as above) return self.result_image If I do this, pointing my browser at an instance, called, say "TestObject": http://myzope/TestObject/Foo returns a PNG image (i.e. a block of data with type 'image/png' which is rendered by the browser), while: http://myzope/TestObject/Foo2 returns an HTML-coded image tag, containing src="http://myzope/TestObject/result_image". This is not rendered by the browser, unless I wrap it in <html><body>...</body></html> tags. So why is that? Why do I care? Well, mainly because the browser will try to cache "result_image" if it's always the same URL, whereas the __getattr__ approach has a unique URL (in the example it doesn't matter, but actually I want to use some coded URL, like "s50" = "scaled to 50x50 pixels". Thanks! Terry -- ------------------------------------------------------ Terry Hancock hancock@anansispaceworks.com Anansi Spaceworks http://www.anansispaceworks.com P.O. Box 60583 Pasadena, CA 91116-6583 ------------------------------------------------------