User container for the Ikoba **************************** .. :doctest: .. :layer: waeup.ikoba.testing.IkobaUnitTestLayer Before we can start, we need some password managers available: >>> from zope.app.authentication.placelesssetup import ( ... PlacelessSetup) >>> PlacelessSetup().setUp() We can create a user container which will hold the useraccounts for us: >>> from waeup.ikoba.userscontainer import UsersContainer >>> myusers = UsersContainer() We can add users, just by passing a name, a password, and (optionally) a title and a description: >>> myusers.addUser('bob', 'bobssecret') Now, Bob is in the container: >>> list(myusers) [u'bob'] We can get Bob's account: >>> bob = myusers['bob'] >>> bob >>> bob.name 'bob' >>> bob.title 'bob' >>> bob.description As we did not give a title, the name was taken instead for title (but not for description). The password, however, is stored encoded: >>> bob.password '{SSHA}...' We can export user accounts: >>> from waeup.ikoba.userscontainer import UserExporter >>> import os >>> import tempfile >>> workdir = tempfile.mkdtemp() >>> outfile = os.path.join(workdir, 'myoutput.csv') >>> exporter = UserExporter() >>> site = {'users':myusers} >>> exporter.export_all(site, outfile) >>> result = open(outfile, 'rb').read() >>> 'name,title,public_name,description,email,phone,roles,local_roles,password' in result True >>> '{SSHA}' in result True We can delete users: >>> myusers.delUser('alice') The container won't complain, although there is no ``alice`` stored yet. But we can really delete users: >>> myusers.delUser('bob') >>> list(myusers) [] Clean up: >>> import shutil >>> shutil.rmtree(workdir)