[Zope] Re: including arbitrary files in zope products
Raja Subramanian
rsubr at pcomm.hfi.unimelb.edu.au
Fri Sep 3 05:44:48 EDT 2004
Hi,
Josef Meile wrote:
> some few month ago, I was trying to do the same: Store a java applet
> class on the file system and load it dynamically from each instance of
> my product, but I didn't succeeded. You can see my attempt on:
>
> http://mail.zope.org/pipermail/zope/2004-May/149813.html
>
> Anyway, I solved it storing the java applet on the Zope DB when
> initializing my product. The code is attached to the message.
Many thanks for your help. It's good to know that I'm not alone with
this problem ;-)
I have the following in my product constructor and it seems to work
fine. It pulls in the contents of applet.jar into Zope on product
instantiation.
# A small dance to import the java client into Zope
product_home = Globals.package_home(globals())
fname = os.path.join(product_home, 'www', 'applet.jar')
f = open(fname, 'rb')
filecontents = f.read()
f.close()
self.manage_addFile('applet.jar', filecontents, 'Applet')
I borrowed the "product_home = Globals..." line from your code. Thanks!
But this is not optimal because if I change applet.jar (which happens a
lot during development), it is not automatically reflected within Zope.
Oh well! I could call the above code whenever I modify the applet and
some how hook it into product refresh.
Since I have only one jar file and only a couple of product instances,
my problem is manageable.
But in general, how does one go about embedding arbitrary files - like
html/text/pdf/etc - within products and have them automatically
refreshed on Zope init/restart/etc? Like everything else in zope,
I was imagining that this would be an easy/simple thing to do.
Is there some reason why the Zope Gods left out such a feature?
- Raja
PS: The Zope XML-RPC mechanism and java xmlrpc libs from apache have
simpilified my application by an order of magitude. Kudos to the
Zope developers.
More information about the Zope
mailing list