[Checkins] SVN: zope.generic/trunk/src/zope/generic/content/
implemented ordered folder
Daniel Meier
daniel.meier at perse.ch
Wed May 3 07:42:23 EDT 2006
Log message for revision 67879:
implemented ordered folder
Changed:
U zope.generic/trunk/src/zope/generic/content/api.py
U zope.generic/trunk/src/zope/generic/content/base.py
U zope.generic/trunk/src/zope/generic/content/configure.zcml
-=-
Modified: zope.generic/trunk/src/zope/generic/content/api.py
===================================================================
--- zope.generic/trunk/src/zope/generic/content/api.py 2006-05-03 11:41:36 UTC (rev 67878)
+++ zope.generic/trunk/src/zope/generic/content/api.py 2006-05-03 11:42:22 UTC (rev 67879)
@@ -25,6 +25,7 @@
from zope.generic.content.base import Container
from zope.generic.content.base import Folder
from zope.generic.content.base import OrderedContainer
+from zope.generic.content.base import OrderedFolder
from zope.generic.content.helper import acquireObjectConfiguration
from zope.generic.content.helper import queryObjectConfiguration
Modified: zope.generic/trunk/src/zope/generic/content/base.py
===================================================================
--- zope.generic/trunk/src/zope/generic/content/base.py 2006-05-03 11:41:36 UTC (rev 67878)
+++ zope.generic/trunk/src/zope/generic/content/base.py 2006-05-03 11:42:22 UTC (rev 67879)
@@ -19,22 +19,29 @@
__docformat__ = 'restructuredtext'
from persistent import Persistent
-from zope.interface import implements
-from zope.schema.fieldproperty import FieldProperty
+from zope.app import folder
+from zope.app.component.interfaces import IPossibleSite
+from zope.app.component.interfaces import ISite
+from zope.app.container import btree
from zope.app.container import contained
-from zope.app.container import btree
from zope.app.container import ordered
-from zope.app import folder
+from zope.component.interfaces import ComponentLookupError
+from zope.component.interfaces import IComponentLookup
+from zope.app.component.interfaces import NewLocalSite
+from zope.event import notify
+from zope.interface import directlyProvidedBy
+from zope.interface import directlyProvides
+from zope.interface import implements
+from zope.schema.fieldproperty import FieldProperty
+from zope.generic.content import IDirectlyTypedContent
+from zope.generic.directlyprovides.api import UpdateProvides
from zope.generic.directlyprovides.api import provides
-from zope.generic.directlyprovides.api import UpdateProvides
from zope.generic.face.api import Face
-from zope.generic.content import IDirectlyTypedContent
-
class Object(Face, Persistent):
"""Default implementation for simple objects."""
@@ -122,3 +129,47 @@
__keyface__ = UpdateProvides(IDirectlyTypedContent['__keyface__'])
__conface__ = FieldProperty(IDirectlyTypedContent['__conface__'])
+
+
+
+class OrderedFolder(ordered.OrderedContainer):
+ """Default implementation local, persistend and ordered-folderish objects."""
+
+
+ implements(IDirectlyTypedContent, IPossibleSite)
+
+ def __init__(self, *pos, **kws):
+ super(OrderedFolder, self).__init__()
+
+ provides('__keyface__')
+
+ __keyface__ = UpdateProvides(IDirectlyTypedContent['__keyface__'])
+ __conface__ = FieldProperty(IDirectlyTypedContent['__conface__'])
+
+
+
+ _sm = None
+
+ def getSiteManager(self):
+ if self._sm is not None:
+ return self._sm
+ else:
+ raise ComponentLookupError('no site manager defined')
+
+ def setSiteManager(self, sm):
+ if ISite.providedBy(self):
+ raise TypeError("Already a site")
+
+ if IComponentLookup.providedBy(sm):
+ self._sm = sm
+ sm.__name__ = '++etc++site'
+ sm.__parent__ = self
+ else:
+ raise ValueError('setSiteManager requires an IComponentLookup')
+
+ directlyProvides(
+ self, ISite,
+ directlyProvidedBy(self))
+
+ notify(NewLocalSite(sm))
+
\ No newline at end of file
Modified: zope.generic/trunk/src/zope/generic/content/configure.zcml
===================================================================
--- zope.generic/trunk/src/zope/generic/content/configure.zcml 2006-05-03 11:41:36 UTC (rev 67878)
+++ zope.generic/trunk/src/zope/generic/content/configure.zcml 2006-05-03 11:42:22 UTC (rev 67879)
@@ -94,4 +94,31 @@
/>
</class>
+ <!-- persistent generic ordered folder implementation -->
+ <class class=".base.OrderedFolder">
+ <require
+ permission="zope.Public"
+ interface="zope.generic.content.ITypedContent"
+ />
+ <require
+ permission="zope.View"
+ interface="zope.app.container.interfaces.IReadContainer"
+ />
+ <require
+ permission="zope.ManageContent"
+ interface="zope.app.container.interfaces.IWriteContainer"
+ />
+ <require
+ permission="zope.ManageContent"
+ attributes="updateOrder"
+ />
+ <allow
+ attributes="getSiteManager"
+ />
+ <require
+ permission="zope.ManageSite"
+ attributes="setSiteManager"
+ />
+ </class>
+
</configure>
More information about the Checkins
mailing list