[Zope] Python Class Question
Hung Jung Lu
hungjunglu@hotmail.com
Thu, 09 Mar 2000 17:33:00 PST
>From: "Daniel G. Rusch" <drusch@globalcrossing.com>
>Thanks, I got the first part working.
>
>Now I am trying to get Zope to find my Chicken.py file. I placed my
>Chicken.py and __init__.py in /lib/python/Shared/DansStuff
>
>I then bounced Zope but it doesn't seem to find my Chicken.py file. I
>say this because if it found it, Zope would compile it into a
>Chicken.pyc file wouldn't it??? The __init__.py isn't compiled either!
>
>Does something special need to be in the __init__.py file?
>...
> > If you are using Zope, you must store your
> > classes where they can be accessed by
> > Python. Usually /lib/python/Shared/Local
> > is a good place, make sure to add the
> > __init__.py file inside the folder. You
> > then refer to the class as Shared.Local.Chicken.
--------------------------------------------------
(1) It should work. I have tested it. Nothing
special is required for the __init__.py file.
(2) Make sure that you have an __init__.py file
inside your lib/python/Shared/Local folder.
This file can be empty. Or you can provide
some __doc__ and __version__ string like
Digicool people do. But it really can be
an empty file.
(3) Inside that folder, create a file Chicken.py,
which contains the following three lines:
class Chicken:
def __init__(self, size):
self.size = size
(4) This python file will not compile automatically.
It will only be compiled when it is imported
by some other Zope modules.
(5) To test what you want: create an external method.
In the folder Extensions inside your Zope root
(if you don't have an Extensions folder, you
have to create one first), create a file Test.py
containing the following lines:
import Shared.Local.Chicken
def getSize(self):
return self.size
def test(self):
Shared.Local.Chicken.Chicken.getSize = getSize
a = Shared.Local.Chicken.Chicken(123)
return a.getSize()
(6) Go to Zope management screen. Restart Zope.
(Or shut it down and restart it manually.)
(7) Create an external method with 'Id' = test,
'Function name' = test, Python module file = Test
and click on the 'Edit' button, then click on the
'OK' button. If you don't know what an external
method is, you've got bigger problems than I
thought. :)
(8) Hit the 'Try It' tab.
Done! now you can use the external method inside
your other DTML documents/methods. For instance,
you can have a mytest_dtml method with the following
lines:
<dtml-var standard_html_header>
<dtml-var "test()">
<dtml-var standard_html_footer>
and it will print the number 123 when you view it.
I shouldn't have treated you like a 3-year old.
But I guess making instructions as clearly as
possible eliminates unnecessary confusions. :)
We've all been newbies once.
Hung Jung
______________________________________________________
Get Your Private, Free Email at http://www.hotmail.com