On Sat, Nov 23, 2002 at 09:07:32PM +0100, Dieter Maurer wrote:
Thomas Guettler writes:
Up to now I server some files in my Python Product with a URL like .../download?file=foo.doc.
It would be much better if the URL would be .../foo.doc
Does someone know how this could be done?
The files are from the filesystem of the server. They are not in the ZODB. You give your product a "__getitem__(self,key)" method. It is called by ZPublisher when an attribute lookup failed, "key" will be the next URL segment, "foo.doc" in your example.
Thank you for this hint! It works 95%. Since no REQUEST is given to __getitem__ I get it like this: if hasattr(self, 'REQUEST'): request=self.REQUEST This or something differnt seems to change the result of getSecurityManager().getUser(): I always get the anonymous user. Does someone know why getUser() in __getitem__ is diffent than in other methods? The next thing is working, but it is not nice: the call to __getitem__() returns the content of a file to the browser. But Zope misses the docstring of the string. I solved by adding the content to the request object and returning a function which returns this, but a nicer solution would be better: request._return_file=self.download(key, REQUEST=request) def return_wrapper_with_docstring(REQUEST): "docstring" return REQUEST._return_file return return_wrapper_with_docstring -- Thomas Guettler <guettli@thomas-guettler.de> http://www.thomas-guettler.de