Source code for ploneintranet.workspace.setuphandlers

from plone import api
from ploneintranet.workspace.config import TEMPLATES_FOLDER
from Products.PlonePAS.setuphandlers import activatePluginInterfaces
from Products.PluggableAuthService.interfaces.plugins import IGroupsPlugin


[docs]def post_install(context): """ - adds the global "workspaces" container - adds the global "templates" case templates container (actual case template is provided by ploneintranet.suite) - makes sure the membrane groups plugin is ordered before the recursive groups plugin - sets the addable types for the ploneintranet policy """ portal = api.portal.get() if "workspaces" not in portal: api.content.create( container=portal, id="workspaces", type="ploneintranet.workspace.workspacecontainer", title="Workspaces", ) if TEMPLATES_FOLDER not in portal: api.content.create( container=portal, id=TEMPLATES_FOLDER, type="ploneintranet.workspace.workspacecontainer", title="Templates", ) # deactivate the enumerate groups interface for collective.workspace activatePluginInterfaces( portal, "workspace_groups", disable=["IGroupEnumerationPlugin"] ) au = api.portal.get_tool("acl_users") banned_ids = ("recursive_groups", "membrane_groups", "workspace_groups") for banned_id in banned_ids: try: au.plugins.deactivatePlugin(IGroupsPlugin, banned_id) except KeyError: pass # Already deactivated # Set up the ploneintranet policy for all addable types # Re-run ploneintranet.workspace:default after installing extra types! default_types = [] types = api.portal.get_tool("portal_types") for type_info in types.listTypeInfo(): if type_info.global_allow: default_types.append(type_info.getId()) if default_types: types_with_special_workflow = ("Folder", "todo", "Event") default_types = [ x for x in default_types if x not in types_with_special_workflow ] pwftool = api.portal.get_tool("portal_placeful_workflow") policy = pwftool["ploneintranet_policy"] policy.setChainForPortalTypes(default_types, ("(Default)",))