Jerry McRae wrote:
Hi ZoPeople,
I have searched and read everything I could find for weeks, I still need help.
I am attempting to convert a Python application into Zope. I am having much trouble creating a Product from this application because of some of its dependances. The user interface is completely separate, so that is not an issue.
I have tried loading the whole app as an external method, which didn't work, but I learned to make a copy of ALL modules and place them in a Zope sub-folder. The python path from my stand-alone python 2.1 didn't get searched.
I am attempting to write a Product to access my application, but have run into several errors mostly due to pickleing.
I would like to have the same code for my base classes, but I have the following conundrums. Any pointers would be much appreciated.
1) There are a lot of classes and tables. Each user can create multiple sets of the application classes and tables. Each set of instances and attributes is pickled as a file. The application is basically just a wrapper for the pickled instances. I can think of no way to convert the pickle file into classes and attributes that Zope can see and/or modify. It seems I will have to re-factor each and every python class as a Zope class.
2) several specialized data files are involved, which are opened and positioned based on the classes and parameters. The files are needed for all aspects of the application. Since Zope cannot pickle open file handles, I could store file names, positions, and other attributes, but I don't know how to re-open the files any time Zope restarts so that the user just references my object name (and methods) to access the data.
3) the key to accessing these specialized files is a windows .DLL file that works great in Python, but is unpickleable (is that a word?) in Zope. I think I want to create a function that gets loaded when the Product does, but I cannot find any examples of Products that do this: allow instanciated objects to call custom functions created from __init__.py in a Product. There must be someplace to add globally available functions to Zope outside of ZODB, yes?
--Jerry
-- /\_/\ Jerry McRae \|||/ mail safely: The Bat! 1.53d (~o o~) (stuck in win98) (. .) Zope v2.4.1 - dryer than golf )'Y'( _______________-o00-(_)-00o-____________________________________ ( ) / Imagination rules the world. --Napoleon
_______________________________________________ Zope maillist - Zope@zope.org http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev )
when you place your non zope stuff into a subdir in the products folder you can import it via: from Products.<yourProductFolder>.<Module> import <ClassName> if something is not pickleable you have to avoid that you don't asign it via "self." to a zope object instance, because zope tries to pickle it to zopedb. i got the same problem with a db connection in a module. another way could be to disable persistence for the particular python product - but i never tried this till now. hope this helps, bernd dorn