[Zope] ZODB based Product problem

Antonio Carrasco antoniojezu@hotmail.com
Mon, 14 Jan 2002 23:51:41 +0100


Don´t forget. I´m spanish and my english may not be enough good. Have fun
with this e-mail.

I´ve been a lot of time looking for documentation, studing it and trying to
develop usefull things with ZODB. Here is my problem.

Well. I´m working in a Product in wich I use a ZODB to store data. I don´t
use Data.fs, I´m trying to use the ZODB with my own file and collection. I
have a product with this properties or attributes:
    id: the id of the instance.
    title: the title
    ZODBFile: The ZODB where the user want to store the data. I use this
name to construct a FileStorage wich is like
'<ZOPEDIR>/lib/python/Products/MyZProduct/var/' + ZODBFile + '.fs
    colection: The colection inside the ZODBFile.

When someone wants to add a MyZProduct instance, I show a form to fill this
attributes. Well, the __init__ is like this:
    def __init__(self,id,title,ZODBFile,Colection):
        self.id=id
        self.title=title
        self.ZODBFile=ZODBFile
        self.Collection=Colection
        #Now try to connect to the database
        self.colection=FileStorage('<ZOPEDIR>/.......#and the name of the
ZODBFile

This last line make the Zope to raise an Error Message in commit in
Connection object. I don´t remember now (I´m not at work), but something
like:
    "Attempt to store data from a remote database connection"

??????????. What´s the problem?. May my ZProduct inherit some other Class or
ZClass to be able to store the data?.

Later I do a self.connection=db.open(). Another problem with this line. I
can´t save in my class attributes this objects. The colection, neither the
connection, and I need both to make the ZODB navigation, and the ZODB open
and close methods.

If you need more information, I´ll post another more comprensive e-mail.

Thanks.
Antonio Carrasco
www.grupoiud.com
PD: For spanish people I have written a How-To / Tutorial named
crearUnProducto.
www.zope.org/Members/rociana/misHowTo/crearUnProducto