[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"