;-*-Doctest-*-

=========
Reinstall
=========

Allow self registration and disable setting the password.

    >>> from plone.app.controlpanel import security
    >>> sec = security.ISecuritySchema(portal)
    >>> sec.enable_self_reg = True
    >>> sec.enable_user_pwd_choice = False

Remember can be reinstalled safely.

    >>> self.loginAsPortalOwner()
    >>> portal.portal_quickinstaller.reinstallProducts(
    ...     ['membrane', 'remember'])

The workflow for a remember type can be changed safely.

    >>> portal.portal_workflow.setChainForPortalTypes(
    ...     ['Member'], ('member_approval_workflow',))
    >>> ignored = portal.portal_workflow.updateRoleMappings()
    >>> self.logout()

Users can still successfully register in the portal.

    >>> from Testing.testbrowser import Browser
    >>> browser = Browser()
    >>> browser.handleErrors = False
    >>> browser.open(portal.absolute_url())
    >>> browser.getLink('Register').click()
    >>> try:
    ...     browser.getControl("User Name").value = 'foo'
    ... except LookupError: # BBB Plone 3
    ...     browser.getControl(name="id").value = 'foo'
    >>> try:
    ...     browser.getControl('Full Name').value = 'Foo Full Name'
    ... except LookupError: # BBB Plone 3
    ...     browser.getControl('Full name').value = 'Foo Full Name'
    >>> browser.getControl('E-mail').value = 'foo@foo.com'
    >>> browser.getControl('Register').click()
    >>> portal.portal_memberdata.foo
    <Member at /plone/portal_memberdata/foo>

Members in the approval workflow can be viewed by a member with review
permissions.

    >>> from Products.PloneTestCase import ptc
    >>> owner_browser = Browser()
    >>> owner_browser.handleErrors = False
    >>> owner_browser.open(portal.absolute_url())
    >>> owner_browser.getLink('Log in').click()
    >>> owner_browser.getControl('Login Name').value = ptc.portal_owner
    >>> owner_browser.getControl('Password').value = ptc.default_password
    >>> owner_browser.getControl('Log in').click()
    >>> owner_browser.open(portal.portal_memberdata.foo.absolute_url())
    >>> print owner_browser.contents
    <...
                Foo Full Name
    ...

A remember installation can also be successfully exported using
portal_setup.

    >>> self.loginAsPortalOwner()
    >>> ignored = portal.portal_setup.runAllExportSteps()
