Tim Cook schrieb:

> class DataStructure(Persistence):
>    """abstract class"""

A typo? Do you use persistent.Persistent?

> 
> class ItemStructure(DataStructure):
>     """abstract class"""

 From your description you should define interfaces for 
Item-/DataStructure, IItem/IDataStructure(Interface), that describe the 
interfaces the classes implement. The interaces these base classes 
implement are automatically implemented by their subclasses.

> class ItemList(ItemStructure):
>     u"""
>     Logical list data structure, where each item has a value and can be
> referred to by a name 
>     and a positional index in the list. The list may be empty.
>     """
> 
>     items = List(
>         value_type=Object(schema=IElement),
>         title=_(u"items"),
>         description=_(u"""Physical representation of the list."""),
>         required=False
>     )

# Did not look at the Object-Part as I don't use that, but afaik you
# need to store objects that provide IElement (instances of classes that
# implement IElement).

class IItemList(Interface):
     '''describe that IItemLists have an attribute items that is a list.
     items = List(
         value_type=Object(schema=IElement),
         title=_(u"items"),
         description=_(u"""Physical representation of the list."""),
         required=False
     )

from persistent.list import PersistentList

class ItemList(ItemStructure):
     '''fullfill the interface. Have an attribute items that is a list'''
     implements(IItemsList)

     items = PersistentList()

Forms validate based on the schema (interface). But maybe you want to 
use FieldProperty also validate if the attribute is written from other 
python cold.

All other classes have to do the same: Interface + implementation class


..Carsten

_______________________________________________
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users

Reply via email to