[Zope3-Users] store persistent objects
Leticia Larrosa
leticia at tesla.cujae.edu.cu
Tue Jun 20 11:03:01 EDT 2006
Hi all
Resume:
I want to store persistent data in the zope database. I must have an object
that store others object inside it, including list of objects, etc. I want
that when I create the root object automatically create object inside it.
Example of python class:
"""
class Leave:
name = u""
(...)
class RootIndex:
index_list = []
(...)
class Root:
name = u""
rootIndex = None
leave_list = []
def __init__(self):
self.rootIndex = RootIndex()
"""
I want store this data, for future access to it throw the user interface. I
don't know which way is the best, even I don't have any way to do that yet
;)
Any idea will be appreciated.
Details:
I create the following classes, interfaces and zcml directives and get the
error when I create a persistent_test throw the ZMI:
"""
AttributeError: 'persistent_test' object has no attribute
'_SampleContainer__data'
"""
My container overrides __init__ and set the __data value in my class ?
(...)
"""
class IPadre(Interface):
nombre_padre = zope.schema.TextLine(
title=u"nombre padre",
required=True,
)
hijo = zope.schema.Object(
schema=IHijo,
)
class Padre(Persistent):
implements(IPadre)
nombre_padre = u""
hijo = Hijo(u"")
def __init__(self, a_nombre_padre, a_nombre_hijo):
self.nombre_padre = a_nombre_padre
self.hijo = Hijo(a_nombre_hijo)
class Ipersistent_test(IContainer):
def __setitem__(name, object):
""" Add an Ipersistent_test object. """
class persistent_test(BTreeContainer):
implements(Ipersistent_test)
def __init__(self):
self['un_padre'] = Padre('Lety','Campanilla')
"""
In my configure.zcml
"""
<interface
interface="persistent_test.Ipersistent_test"
type="zope.app.content.interfaces.IContentType"
/>
<content class="persistent_test.persistent_test">
<implements
interface="zope.app.annotation.interfaces.IAttributeAnnotatable"
/>
<implements
interface="zope.app.container.interfaces.IContentContainer"
/>
<factory id="persistent_test.persistent_test" description="persistent
test"/>
<require
permission="zope.ManageContent"
interface="persistent_test.Ipersistent_test"
/>
</content>
<interface
interface="persistent_test.IPadre"
type="zope.app.content.interfaces.IContentType"
/>
<content class="persistent_test.Padre">
<implements
interface="zope.app.annotation.interfaces.IAttributeAnnotatable"
/>
<implements
interface="zope.app.container.interfaces.IContentContainer"
/>
<factory id="persistent_test.Padre" description="Padre"/>
<require
permission="zope.ManageContent"
interface="persistent_test.IPadre"
/>
<require
permission="zope.ManageContent"
set_schema="persistent_test.IPadre"
/>
</content>
<browser:addMenuItem
class="persistent_test.persistent_test"
title="Persistent Test"
permission="zope.ManageContent"
/>
"""
Traceback:
"""
Traceback (innermost last):
Module zope.publisher.publish, line 138, in publish
result = publication.callObject(request, object)
Module zope.app.publication.zopepublication, line 164, in callObject
return mapply(ob, request.getPositionalArguments(), request)
Module zope.publisher.publish, line 113, in mapply
return debug_call(object, args)
- __traceback_info__: <BoundPageTemplateFile of
<zope.app.publisher.browser.viewmeta.Contents object at 0x02847850>>
Module zope.publisher.publish, line 119, in debug_call
return object(*args)
Module zope.app.pagetemplate.viewpagetemplatefile, line 83, in __call__
return self.im_func(im_self, *args, **kw)
Module zope.app.pagetemplate.viewpagetemplatefile, line 51, in __call__
sourceAnnotations=getattr(debug_flags, 'sourceAnnotations', 0),
Module zope.pagetemplate.pagetemplate, line 117, in pt_render
strictinsert=0, sourceAnnotations=sourceAnnotations)()
Module zope.tal.talinterpreter, line 239, in __call__
self.interpret(self.program)
Module zope.tal.talinterpreter, line 314, in interpret
handlers[opcode](self, args)
Module zope.tal.talinterpreter, line 869, in do_useMacro
self.interpret(macro)
Module zope.tal.talinterpreter, line 314, in interpret
handlers[opcode](self, args)
Module zope.tal.talinterpreter, line 502, in do_optTag_tal
self.do_optTag(stuff)
Module zope.tal.talinterpreter, line 487, in do_optTag
return self.no_tag(start, program)
Module zope.tal.talinterpreter, line 482, in no_tag
self.interpret(program)
Module zope.tal.talinterpreter, line 314, in interpret
handlers[opcode](self, args)
Module zope.tal.talinterpreter, line 839, in do_defineMacro
self.interpret(macro)
Module zope.tal.talinterpreter, line 314, in interpret
handlers[opcode](self, args)
Module zope.tal.talinterpreter, line 941, in do_defineSlot
self.interpret(block)
Module zope.tal.talinterpreter, line 314, in interpret
handlers[opcode](self, args)
Module zope.tal.talinterpreter, line 931, in do_defineSlot
self.interpret(slot)
Module zope.tal.talinterpreter, line 314, in interpret
handlers[opcode](self, args)
Module zope.tal.talinterpreter, line 839, in do_defineMacro
self.interpret(macro)
Module zope.tal.talinterpreter, line 314, in interpret
handlers[opcode](self, args)
Module zope.tal.talinterpreter, line 552, in do_setLocal_tal
self.engine.setLocal(name, self.engine.evaluateValue(expr))
Module zope.tales.tales, line 698, in evaluate
return expression(self)
- C:\Python24\Lib\site-packages\zope\app\container\browser\contents.pt
- Line 7, Column 4
- Expression: <PathExpr standard:'view/listContentInfo'>
- Names:
{'args': (),
'context': <zope.app.folder.folder.Folder object at 0x01986EF0>,
'default': <object object at 0x00A8C500>,
'loop': {},
'nothing': None,
'options': {},
'repeat': {},
'request': <zope.publisher.browser.BrowserRequest instance
URL=http://localhost:8080/@@contents.html>,
'template':
<zope.app.pagetemplate.viewpagetemplatefile.ViewPageTemplateFile object at
0x01782910>,
'usage': <zope.pagetemplate.pagetemplate.TemplateUsage object at
0x028475F0>,
'view': <zope.app.publisher.browser.viewmeta.Contents object at
0x02847850>,
'views': <zope.app.pagetemplate.viewpagetemplatefile.ViewMapper
object at 0x02847B70>}
Module zope.tales.expressions, line 204, in __call__
return self._eval(econtext)
Module zope.tales.expressions, line 198, in _eval
return ob()
Module zope.app.container.browser.contents, line 82, in listContentInfo
self.addObject()
Module zope.app.container.browser.contents, line 248, in addObject
adding.action(request['type_name'], new)
Module zope.app.container.browser.adding, line 146, in action
content = factory()
Module zope.component.factory, line 37, in __call__
return self._callable(*args, **kw)
Module persistent_test, line 46, in __init__
self['un_padre'] = Padre('Lety','Campanilla')
Module zope.app.container.sample, line 86, in __setitem__
setitem(self, self.__data.__setitem__, key, object)
AttributeError: 'persistent_test' object has no attribute
'_SampleContainer__data'
"""
Thanks in advanced.
Leticia Larrosa
__________________________________________
XIII Convención Científica de Ingeniería y Arquitectura
28/noviembre al 1/diciembre de 2006
Cujae, Ciudad de la Habana, Cuba
http://www.cujae.edu.cu/eventos/convencion
More information about the Zope3-users
mailing list