[Zope-Checkins] CVS: Zope3/lib/python/Zope/App/OFS/Content/Folder - Folder.py:1.3 configure.zcml:1.5

Jim Fulton jim@zope.com
Thu, 20 Jun 2002 16:00:52 -0400


Update of /cvs-repository/Zope3/lib/python/Zope/App/OFS/Content/Folder
In directory cvs.zope.org:/tmp/cvs-serv19918/lib/python/Zope/App/OFS/Content/Folder

Modified Files:
	Folder.py configure.zcml 
Log Message:

Gary and Jim implemented most of:
http://dev.zope.org/Wikis/DevSite/Projects/ComponentArchitecture/AddMenuProposalAndEndOfZmiNamespace

A lot of clean up is needed, including:

- Implementation additional add menus, for example for services.

- Ripping out old unused implementation.





=== Zope3/lib/python/Zope/App/OFS/Content/Folder/Folder.py 1.2 => 1.3 ===
 from Zope.App.OFS.Annotation.IAnnotatable import IAnnotatable
 from Zope.App.OFS.Container.Exceptions import UnaddableError
+from Zope.Exceptions import DuplicationError
 
 class IFolder(IContainer, IServiceManagerContainer):
     """The standard Zope Folder object interface."""
@@ -82,8 +83,16 @@
 
     def setObject(self, name, object):
         """Add the given object to the folder under the given name."""
-        if type(name) in StringTypes and len(name)==0:
-            raise ValueError
+
+        if not (isinstance(name, str) or isinstance(name, unicode)):
+            raise TypeError("Name must be a string rather than a %s" %
+                            name.__class__.__name__)
+        if not name:
+            raise TypeError("Name must not be empty")
+
+        if name in self.data:
+            raise DuplicationError("name, %s, is already in use" % name)
+
         self.data[name] = object
         return name
 


=== Zope3/lib/python/Zope/App/OFS/Content/Folder/configure.zcml 1.4 => 1.5 ===
-   xmlns='http://namespaces.zope.org/zope'
-   xmlns:zmi='http://namespaces.zope.org/zmi'
->
+<zopeConfigure xmlns='http://namespaces.zope.org/zope'>
 
   <!-- Simple Folder Directives -->
 
   <content class=".Folder.">
-    <zmi:factory
+    <implements interface="Zope.App.OFS.Container.IContentContainer." />
+    <factory
         id="Folder"
         permission="Zope.ManageContent"
         title="Folder"
@@ -28,12 +26,14 @@
 
   <!-- XXX Do we really need RootFolder? -->
   <content class=".RootFolder.">
+    <implements interface="Zope.App.OFS.Container.IContentContainer." />
     <require like_class=".Folder." />
   </content>
 
   <!-- Loaded Folder Directives -->
   <content class=".LoadedFolder.">
-    <zmi:factory
+    <implements interface="Zope.App.OFS.Container.IContentContainer." />
+    <factory
         id="LoadedFolder"
         permission="Zope.ManageContent"
         title="Loaded Folder"