[PEAK] A few peak.web bugs
Phillip J. Eby
pje at telecommunity.com
Fri Nov 21 09:51:18 EST 2003
At 12:14 PM 11/21/03 +0100, Radek Kanovsky wrote:
>Hi all,
>
>playing with peak.web I have noticed some bugs:
>
>1. peak.web.places doesn't import needed WebException
>
> - from errors import NotFound, NotAllowed
> + from errors import NotFound, NotAllowed, WebException
>
>2. accessing attribute that's not explicitely allowed or denied
> (via security.allow or otherwise) causes following exception:
...
> File "/usr/local/lib/python2.3/site-packages/peak/web/places.py",
> line 189, in traverseTo
> raise NotAllowed(ctx, result.message)
> AttributeError: 'bool' object has no attribute 'message'
>
> Here places.Traversable.traverseTo relies on attribute `message'
> of object returned from Interaction.allows method. But True/False
> is returned sometimes. So `result.message' should be changed
> to `getattr(result, "message", "Permission denied")' or such.
Both of these are now fixed in CVS. Thanks.
>3. When I create web application such that its root component directly
> implements IWebPage protocol, it has no effect, i.e. render method
> is not called. `index_html' is called instead or default skin
> instance representation is rendered if index_html is not defined.
> I am not sure, if this is not feature. I don't realy need renderable
> application root, just noticed that during experiments.
I'm not sure if this is a bug or feature, either. :) The root of
publication is always the 'skin' object, which allows traversing to
resources via /++resources++. As a side effect, it is not adaptable to
IWebPage, even if the application root is.
I've made a tentative fix for this, by giving Skin a getObject() method
that delegates to the root object's getObject() method. Let me know if
this works. Thanks.
More information about the PEAK
mailing list