[Checkins] SVN: zope.site/trunk/src/zope/site/ make filerepresentation work for zope.site.folder.Folder

Jan-Wijbrand Kolman janwijbrand at gmail.com
Fri Jan 30 07:16:57 EST 2009


Log message for revision 95551:
  make filerepresentation work for zope.site.folder.Folder

Changed:
  U   zope.site/trunk/src/zope/site/folder.py
  A   zope.site/trunk/src/zope/site/tests/folder.txt
  U   zope.site/trunk/src/zope/site/tests/test_folder.py

-=-
Modified: zope.site/trunk/src/zope/site/folder.py
===================================================================
--- zope.site/trunk/src/zope/site/folder.py	2009-01-30 12:01:43 UTC (rev 95550)
+++ zope.site/trunk/src/zope/site/folder.py	2009-01-30 12:16:57 UTC (rev 95551)
@@ -1,4 +1,4 @@
-from zope.interface import implements
+from zope.interface import implements, directlyProvides
 
 from zope.site.interfaces import IFolder, IRootFolder
 from zope.site.site import SiteManagerContainer

Added: zope.site/trunk/src/zope/site/tests/folder.txt
===================================================================
--- zope.site/trunk/src/zope/site/tests/folder.txt	                        (rev 0)
+++ zope.site/trunk/src/zope/site/tests/folder.txt	2009-01-30 12:16:57 UTC (rev 95551)
@@ -0,0 +1,58 @@
+===============================
+File representation for Folders
+===============================
+
+Folders can be represented in file-system-like protocols (e.g. FTP). An
+adapter abstracts some internals away and adds support for accessing the
+'++etc++site' folder from those protocols.
+
+  >>> from zope.site.folder import rootFolder
+  >>> from zope.container.directory import ReadDirectory
+  >>> folder = rootFolder()
+  >>> from zope.site.site import LocalSiteManager
+  >>> folder.setSiteManager(LocalSiteManager(folder))
+  >>> fs_folder = ReadDirectory(folder)
+
+As the root folder is a site, the ++etc++site object appears:
+
+  >>> fs_folder.keys()
+  ['++etc++site']
+  >>> fs_folder.get('++etc++site')
+  <LocalSiteManager ++etc++site>
+  >>> fs_folder['++etc++site']
+  <LocalSiteManager ++etc++site>
+  >>> list(fs_folder.__iter__())
+  ['++etc++site']
+  >>> fs_folder.values()
+  [<LocalSiteManager ++etc++site>]
+  >>> len(fs_folder)
+  1
+  >>> fs_folder.items()
+  [('++etc++site', <LocalSiteManager ++etc++site>)]
+  >>> '++etc++site' in fs_folder
+  True
+
+Let's add another folder to see how a non-site folder behaves:
+
+  >>> from zope.app.folder.folder import Folder
+  >>> folder['test'] = Folder()
+
+The site folder now contains the new folder:
+
+  >>> fs_folder.keys()
+  [u'test', '++etc++site']
+  >>> fs_folder.get('test')
+  <zope.app.folder.folder.Folder object at 0x...>
+  >>> fs_folder['test']
+  <zope.app.folder.folder.Folder object at 0x...>
+  >>> list(fs_folder.__iter__())
+  [u'test', '++etc++site']
+  >>> fs_folder.values()
+  [<zope.app.folder.folder.Folder object at 0x...>, <LocalSiteManager ++etc++site>]
+  >>> len(fs_folder)
+  2
+  >>> fs_folder.items()
+  [(u'test', <zope.app.folder.folder.Folder object at 0x...>),
+   ('++etc++site', <LocalSiteManager ++etc++site>)]
+  >>> 'test' in fs_folder
+  True

Modified: zope.site/trunk/src/zope/site/tests/test_folder.py
===================================================================
--- zope.site/trunk/src/zope/site/tests/test_folder.py	2009-01-30 12:01:43 UTC (rev 95550)
+++ zope.site/trunk/src/zope/site/tests/test_folder.py	2009-01-30 12:16:57 UTC (rev 95551)
@@ -19,4 +19,7 @@
             makeSuite(FolderTest),
             DocTestSuite('zope.site.folder',
                          setUp=setUp, tearDown=tearDown),
+            doctest.DocFileSuite("folder.txt",
+                             setUp=setUp, tearDown=tearDown,
+                             optionflags=flags),
             ))



More information about the Checkins mailing list