On Wed, 30 May 2007 01:44:07 +0300, kgi <[EMAIL PROTECTED]> wrote:

Hi all.

I'm doing a lot of Athena stuff at the moment. Calls from client->server and
server-> client (which is virtually 100% of the calls) are working
wonderfully. However, I'm having difficulty getting one Javascript module to
call directly onto another Javascript module (that is, client->client) in a
way that I would expect, and I think it's something in the package/module
system Athena uses that I haven't yet grokked.

I've attached a minimal test case. Since it actually has a directory
structure, I've tar-gzipped it; sorry for the additional inconvenience.
Directions are in the README file. The only requirement is that you modify
PYTHONPATH before twistd-ing the tac file (actually, it's a .py file, but it
should be a .tac file).

Briefly, the problem is this: I've got two Javascript modules associated with
LiveElements; in the example these are XCall.A and XCall.B. XCall.A knows
about XCall.B through an import "statement"; that is, it has a line:

   // import XCall.B

It tries to call a method on XCall.B (XCall.B.chain()), but it can't see this
method and throws an exception (which is caught by Nevow).

This is like trying to call an unbound method in Python.  What you really
want to be doing is calling chain on an /instance/ of XCall.B, not on the
class object itself.

Also, I'd recommend not clobbering XCall.A and XCall.B with your class
objects, since those are set up to be module objects because they each
have a corresponding .js file.  Athena's module system tries to mimick
many aspects of Python's - in this case, XCall corresponds to a package,
XCall.A and XCall.B are modules in that package, and you want to be
defining things like XCall.A.Foo and XCall.B.Bar as attributes of those
modules.

Jean-Paul

_______________________________________________
Twisted-web mailing list
[email protected]
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web

Reply via email to