[Zope] PythonScript and ZClass generation problem

Alexander Limi alexander@limi.net
Tue, 16 Jan 2001 19:05:04 +0100


Hi,

We recently decided to use LoginManager for authentication on our site, and
refactored our user registration methods to use PythonMethods instead of
DTML.

Now, during the registration of a user, we should also add a ZClass instance
in the correct forlder. This object is a representation of some of the
information the user provides when he registers with us.

But we have stumbled across a problem. This is probably a very basic and
simple problem, but I couldn't find any info on it on zope.org, and none of
the people on IRC could help us either. So I'll try this posting instead. :)

What we're trying to do is to add a ZClass instance/object programmatically
from a PythonMethod. Our constructor is called Artist_add, and resides in
our Product under the Control_Panel folder. The constructor uses variables
that we have set in the REQUEST object.

So the process is like this:

User fills out form with variables that are put in REQUEST
  |
Form calls "registerartist", which is a PythonMethod
  |
"registerartist" creates the user
  |
"registerartist" tries to call the constructor of our Artist ZClass to add
an Artist object in our "artists" folder, but fails.

To add the Artist object we tried to call the constructor in the following
way from "registerartist":

return self.artists.manage_addProduct['Artist'].Artist_add(_.None,_)

but then the REQUEST object was not available, and the object creation fails
since it can't find the variables it needs. The traceback for this was:

File <string>, line 41, in registerartist (Object:
ApplicationDefaultPermissions) File
/usr/local/zope/lib/python/OFS/DTMLMethod.py, line 168, in __call__ (Object:
Artist_add) File /usr/local/zope/lib/python/DocumentTemplate/DT_String.py,
line 531, in __call__ (Object: Artist_add) IndexError: (see above)



So we tried a different approach:

return self.artists.manage_addProduct['Artist'].Artist_add(_.None,REQUEST)

This solved the problem with REQUEST not being available, but now we can't
access Artist.createInObjectManager. The error message we get is:
"NameError Artist".

So, I guess the question is: how can I add a ZClass instance
programmatically from a PythonMethod?

Additional version info:
Zope 2.2.4
PythonMethod 0-1-7
LoginManager 0-8-8b1
ZPatterns 0-4-3b1
DataSkinAddons 0-0-2
Membership 0.7.8



Thanks in advance,


Alexander.