[Zope3-Users] Multi-level object structure
Jeronimo Jacobo
jerojacobo at gmail.com
Mon Aug 11 10:14:52 EDT 2008
Thanks Markus!
That helped a lot. Now I am trying to display the fields of each container
(age, name, etc). But i think i will figure it out. It is just that the
Zope's learning process is not that fast for me!
Best regards.
Jeronimo
2008/8/8 Markus Kemmerling <markus.kemmerling at meduniwien.ac.at>
> Am 08.08.2008 um 17:24 schrieb Jeronimo Jacobo:
>
>
> Hi
>> I am new in Zope 3 world, i have read the book " Web Component Development
>> with Zope 3" and I am designing a Zope application which involves a
>> multiple-level object structure in which the father class has multiple
>> instances of son class and the son class has multiple objects of the
>> grandson class.
>> Up to now i have managed to construct something like this:
>>
>> class IGrandson(Interface):
>> age=Int(
>> title=_(u'Age'),
>> description=_(u'The age of the Grandson'),
>> required=True
>> )
>> name=TextLine(
>> title=_(u'Name'),
>> description=_(u"The name of the Grandson"),
>> required=True
>> )
>>
>> class ISon(Interface):
>> name=TextLine(
>> title=_(u'Name'),
>> description=_(u'Name of the Son'),
>> required=True,
>> )
>> grandsons=List(
>> title=_('Grandsons'),
>> description=_("A list of Grandsons"),
>> required=False,
>> value_type=Object(
>> title=_('Grandson'),
>> schema=IGrandson
>> )
>> )
>>
>> However, in this way i can only create Sons. Grandsons will be added as an
>> element of the Son''s grandsons list. If I want to create a Grandson without
>> father, how can I add it later to the Son''s list?
>>
>> Is the List the most effective way to store objects? I have tried with
>> BTrees, but then i have problems to construct the widgets and views to add
>> elements to the BTree and i think BTrees is not an interfaces so I cannot do
>> something like:
>>
>> grandsons=OOBTree(
>> title=_('Grandsons'),
>> description=_("A list of Grandsons"),
>> required=False,
>> value_type=Object(
>> title=_('Grandson'),
>> schema=IGrandson
>> )
>> )
>>
>> nor
>>
>> grandsons=Object(
>> title=_('Grandson'),
>> schema=OOBTree
>>
>> )
>>
>> Also, considering that the structure can grow up to four generations
>> (granpa, father, son, grandson), what will be the best approach to achieve
>> this mult-level structure?
>>
>> My initial idea was to present in the first view the Granpas. When
>> selecting one of them, its attributes will be shown, among them its sons
>> (the Fathers). Then when selecting one of them, the process will repeat
>> until the grandson.
>>
>> I appretiate much your help and ideas. Thanks in advance.
>>
>> Jeronimo
>>
>
> You could implement everybody as a container for objects of the same type
> as the container itself, something like this:
>
> IGenealogy(IContainer):
> ...
>
> IPerson(IContained, IContainer):
> contains('. IPerson')
> containers('. IPerson', IGenealogy)
>
> age=Int(
> title=_(u'Age'),
> description=_(u'The age of the Person'),
> required=True
> )
>
> name=TextLine(
> title=_(u'Name'),
> description=_(u"The name of the Person"),
> required=True
> )
>
> This way the father-son relation will only be a matter of the parent-child
> relation and not a feature of the defining interface itself (some day every
> son may become a father himself ;-).
>
> Regards,
> Markus Kemmerling
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.zope.org/pipermail/zope3-users/attachments/20080811/b36aa70d/attachment.html
More information about the Zope3-users
mailing list