[Zope-Checkins] CVS: Zope3/lib/python/Zope/App/OFS - FolderAdder.py:1.1.2.2 FolderContents.py:1.1.2.2
Tres Seaver
tseaver@zope.com
Mon, 26 Nov 2001 16:10:25 -0500
Update of /cvs-repository/Zope3/lib/python/Zope/App/OFS
In directory cvs.zope.org:/tmp/cvs-serv22138
Modified Files:
Tag: Zope-3x-branch
FolderAdder.py FolderContents.py
Log Message:
- Make adding objects testable (use confirmation page).
- Add tests for adding, and for duplicate IDs.
- Add removal.
- Add test for removal.
=== Zope3/lib/python/Zope/App/OFS/FolderAdder.py 1.1.2.1 => 1.1.2.2 ===
from Zope.ComponentArchitecture import createObject, getPresentation
+class FolderAdderError( Exception ):
+ pass
+
+class DuplicateIDError( FolderAdderError ):
+ pass
+
class FolderAdder( AttributePublisher ):
__implements__ = AttributePublisher.__implements__
@@ -46,11 +52,12 @@
"""
Instantiate an object and put it in our folder.
"""
+ if id in self._folder.objectIds():
+ raise DuplicateIDError, "ID '%s' already in use." % id
self._folder.setObject( id, createObject( self._folder, type_name ) )
# XXX: This is horribly broken, but I can't do better until
# we have a way to compute absolute URLs.
- return getPresentation( self._folder.getObject( id ),
- '', IBrowserPublisher ).index()
+ return self.confirmed( type_name=type_name, id=id )
#
# Make it possible for 'index' to find the folder.
@@ -59,5 +66,9 @@
return self._folder
index = PageTemplateFile( 'folder_add.pt'
+ , '%s/www' % os.path.dirname(__file__)
+ )
+
+ confirmed = PageTemplateFile( 'folder_add_confirmed.pt'
, '%s/www' % os.path.dirname(__file__)
)
=== Zope3/lib/python/Zope/App/OFS/FolderContents.py 1.1.2.1 => 1.1.2.2 ===
return info
+ def remove( self, name, silent=0 ):
+ """
+ Remove the object stored under 'name', or raise a KeyError
+ if no such object (pass non-zero 'silent' to suppress the
+ exception).
+ """
+ try:
+ self.getContext().delObject( name )
+ except KeyError:
+ if not silent:
+ raise
+ return self.confirmRemoved( name=name )
+
def listContentInfo( self ):
return map( self._extractContentInfo, self._folder.objectItems() )
@@ -44,5 +57,9 @@
return self._folder
index = PageTemplateFile( 'folder_main.pt'
+ , '%s/www' % os.path.dirname(__file__)
+ )
+
+ confirmRemoved = PageTemplateFile( 'folder_remove_confirmed.pt'
, '%s/www' % os.path.dirname(__file__)
)