=============================== 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') >>> fs_folder['++etc++site'] >>> list(fs_folder.__iter__()) ['++etc++site'] >>> fs_folder.values() [] >>> len(fs_folder) 1 >>> fs_folder.items() [('++etc++site', )] >>> '++etc++site' in fs_folder True Let's add another folder to see how a non-site folder behaves: >>> from zope.site.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') >>> fs_folder['test'] >>> list(fs_folder.__iter__()) [u'test', '++etc++site'] >>> fs_folder.values() [, ] >>> len(fs_folder) 2 >>> fs_folder.items() [(u'test', ), ('++etc++site', )] >>> 'test' in fs_folder True