Zope-2.6 acquisition problem
Hi, I'm building a web site using Zope-2.6. I created several new "folder like" products with new properties and methods, which hinerit from SimpleItem, PropertyManager and ObjectManager. My problem is simple : 1. I put an image in a folder, with name "logo" => OK 2. I put a different image in a subfolder, with name "toto" => OK 3. I rename the second image to "logo" => ERROR: when downloading the image, I get the image from the parent folder !!! 4. I rename the second image to "toto" => OK, I retrieve the original image... (and it's the same problem if I directly create an image called "logo" in the subfolder). I think that this is in complete contradiction with Zope acquisition principles, so I suppose that I missed something... Any idea will be greatly welcome... Thanks, Thierry -- Linux every day, keeps Dr Watson away... http://gpc.sourceforge.net -- http://www.ulthar.net
Thierry Florac wrote:
Hi,
I'm building a web site using Zope-2.6. I created several new "folder like" products with new properties and methods, which hinerit from SimpleItem, PropertyManager and ObjectManager. My problem is simple : 1. I put an image in a folder, with name "logo" => OK 2. I put a different image in a subfolder, with name "toto" => OK 3. I rename the second image to "logo" => ERROR: when downloading the image, I get the image from the parent folder !!! 4. I rename the second image to "toto" => OK, I retrieve the original image... (and it's the same problem if I directly create an image called "logo" in the subfolder).
I think that this is in complete contradiction with Zope acquisition principles, so I suppose that I missed something...
Any idea will be greatly welcome...
How do you "show" the image when this happens, directly via it's url, an image-tag, or <dtml-var logo>? cheers, oliver
Hi, On Thu, 2002-11-28 at 17:18, Oliver Bleutgen wrote:
I created several new "folder like" products with new properties and methods, which hinerit from SimpleItem, PropertyManager and ObjectManager. My problem is simple : 1. I put an image in a folder, with name "logo" => OK 2. I put a different image in a subfolder, with name "toto" => OK 3. I rename the second image to "logo" => ERROR: when downloading the image, I get the image from the parent folder !!! 4. I rename the second image to "toto" => OK, I retrieve the original image...
I think that this is in complete contradiction with Zope acquisition principles, so I suppose that I missed something...
How do you "show" the image when this happens, directly via it's url, an image-tag, or <dtml-var logo>?
At first, just in the ZMI !! In fact, I think I solved the problem, but I'm not sure of any good explanation : - first, I added 'Acquisition.Implicit' as the first inherited class of my custom object manager (but I think it's already done throught ObjectManager inheritance), - second, I removed my first image from an HTTP cache manager with which it was associated. After this, I packed the database, restarted Zope, and now everything seems right, but several questions remain: how does HTTP cache managers handle acquition ? In fact, I just use <img src="logo"> in my HTML pages; if only the first image is associated with the cache manager, why is the first image retrieved when it's the second one (not associated with the cache) which is first in the acquisition path ?? If this behaviour is "normal", I don't understand when and how cache managers should be used... Thanks, Thierry
Thierry Florac wrote:
Hi,
On Thu, 2002-11-28 at 17:18, Oliver Bleutgen wrote:
I created several new "folder like" products with new properties and methods, which hinerit from SimpleItem, PropertyManager and ObjectManager. My problem is simple : 1. I put an image in a folder, with name "logo" => OK 2. I put a different image in a subfolder, with name "toto" => OK 3. I rename the second image to "logo" => ERROR: when downloading the image, I get the image from the parent folder !!! 4. I rename the second image to "toto" => OK, I retrieve the original image...
I think that this is in complete contradiction with Zope acquisition principles, so I suppose that I missed something...
How do you "show" the image when this happens, directly via it's url, an image-tag, or <dtml-var logo>?
At first, just in the ZMI !! In fact, I think I solved the problem, but I'm not sure of any good explanation : - first, I added 'Acquisition.Implicit' as the first inherited class of my custom object manager (but I think it's already done throught ObjectManager inheritance), - second, I removed my first image from an HTTP cache manager with which it was associated.
After this, I packed the database, restarted Zope, and now everything seems right, but several questions remain: how does HTTP cache managers handle acquition ? In fact, I just use <img src="logo"> in my HTML pages; if only the first image is associated with the cache manager, why is the first image retrieved when it's the second one (not associated with the cache) which is first in the acquisition path ??
If this behaviour is "normal", I don't understand when and how cache managers should be used...
This is surely not a problem of the http-cache manager, because all it does is putting appropriate headers for caching in the RESPONSE, and the client (i.e. browser/proxy) decides what to make of it. In your case I assume that in step 3, the image wasn't really loaded from zope, but taken from the browser/proxy cache instead. I have made the experience that browsers are more lax when it comes to images. The client caches identify which objects they assume to be the same by looking at the URI, in your case "someserver/folder/subfolder/logo", which is the same for the two different cases in 1 and 3. To find out and understand what really is going on you can use shanes tcpwatch.py, or maybe just take a sharp look at the properties of the image in the browser. There whole concept is somewhat more complex, but I think the above explains what has happened in your case. cheers, oliver
Thierry Florac writes:
I'm building a web site using Zope-2.6. I created several new "folder like" products with new properties and methods, which hinerit from SimpleItem, PropertyManager and ObjectManager. My problem is simple : 1. I put an image in a folder, with name "logo" => OK 2. I put a different image in a subfolder, with name "toto" => OK 3. I rename the second image to "logo" => ERROR: when downloading the image, I get the image from the parent folder !!! 4. I rename the second image to "toto" => OK, I retrieve the original image... (and it's the same problem if I directly create an image called "logo" in the subfolder). This looks like a caching problem...
Did you force your browser to reload the images with using any cache? It may be necessary to press some key in addition to request the reload for this. Dieter
participants (3)
-
Dieter Maurer -
Oliver Bleutgen -
Thierry Florac