[Twisted-Python] Woven: access to submodels
Moshe Zadka
m at moshez.org
Sun Jul 13 04:04:03 MDT 2003
On Sun, 13 Jul 2003, Mary <mary-twisted at puzzling.org> wrote:
> 1. Pure design issue: There still needs to be a query along the lines
> of "does this author in fact exist?" so that /author/Mary/ generates a
> list of my articles and /author/Humphrey/ generates an error page. This
> was the query I was trying to avoid by passing the submodel around --
> the "get me all posts by Mary" query was always going to be part of
> IndividualPage.
Ah, I see. Well, a somewhat thorny issue in current web code [that
we may fix someday in the future, but you're not interested in that]
is that child-getting is synchronous. This means that an easy answer
is currently beyond us. A non-easy way to do that is to hack around:
from twisted.web import resource, server
class MaybeIndividualPage(resource.Resource):
isLeaf = 1
def __init__(self, author):
resource.Resource.__init__(self)
self.author = author
def render(self, request):
def raiseException():
raise LookupError
def simulateServer(value):
if value == server.NOT_DONE_YET:
return
request.write(value)
request.finish()
query = deferredWhichIsTrueIfExists(self.author).addCallback(
lambda x: (x or error.NoResource()) and
IndividualPage(self.author).getChildForRequest(request
).render(request)).addCallback(
simulateServer)
return server.NOT_DONE_YET
Then, in getDynamicChild, return MaybeIndividualPage(author) instead
of IndividualPage(author).
Basically, this is explicitly asyncing the child-getting mechanism
by going through the async-ready render method. I realize it's not
the best-looking code in the world, but it should get the job done.
> 2. More generally, since I'm unfamiliar with the design pattern(s)
> associated with Woven, what level of information sharing in this sense
> is acceptable between parents and children? (Pointers to other sources
> of information would be welcome, since this question is pretty open
> ended)?
Well, we don't have any real understanding of this issue either, since
Woven is not old enough. My gut instinct would be towards "pretty high",
though.
--
Moshe Zadka -- http://moshez.org/
Buffy: I don't like you hanging out with someone that... short.
Riley: Yeah, a lot of young people nowadays are experimenting with shortness.
Agile Programming Language -- http://www.python.org/
More information about the Twisted-Python
mailing list