> 760 container._q_access(request, component) # <- extra parameter
I have a _q_access that needs the component and does the following:
component = req.environ['PATH_INFO'][1:].split('/', 1)[0]
This only works because it knows where it lives in the path (always at the
bottom). If the above doesn't work you could do something like:
p = req.environ['PATH_INFO'][1:].split('/')
component = p[len(publisher.get_namespace_stack())]
... but that could be considered grody and hard to understand.
> def _q_access(request, name):
> if request.session.user is None and name == "private_thing":
> raise AccessError('You must be logged in to access
> "private_thing".')
This I would suggest putting in private_thing. Then when you add another
access-controlled object you simply have it inherit (or implement directly)
whatever access method and there's no need to add to a growing switch in
_q_access.
I had to do access checks in _q_access since the object for which access must
be checked doesn't exist yet, but I don't know whether that's considered
"quixotic" (I put the login name in the path).