I'm building a "photo album" site with Quixote, as part of research for
a chapter in Learning Python, 2nd ed. I'm stumbling on a problem which
is puzzling me.
One of the objects in the app is a "Folder" object. the Folder can have
images in it, and other Folders. Folders show snapshots of the images,
and clicking on an image takes you to a "view" of that image.
The names of the folders and images are dynamic (they correspond to
directories on disk), so I want to override _q_getname and do something
like:
def _q_getname(self, request, component):
if component in self._dirs:
return Folder(request, component)
if component in self._files:
return Image(request, component)
so that given the _q_index output for folder a, which would include
links to:
a/pic1.jpg
a/pic2.jpg
a/b/
Now, this fails unless I do something like:
def __init__(self, request):
self._path = request.get_path()
def _q_getname(self, request, component):
if request.get_path() == self._path
return self
if component in self._dirs:
return Folder(request, component)
if component in self._files:
return Image(request, component)
So, I have a few questions:
1) why is _q_getname called when I expect _q_index to suffice?
2) if I put a debugging statement before the "return self" and then
lookup object a/b/ (listing of folder b inside folder a), I get _four_
printed lines -- a, b, a, b. What's going on?
Thanks for any insight.
--david