[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