def setupPeopleFolder(portal, out=None): """ set up the 'people' folder """ oldname = 'Members' newname = 'people' newtitle = 'People' print >> out, 'Setting up "%s" folder' % newname obj_ids = portal.objectIds() if oldname in obj_ids: print >> out, '-> Renaming "%s" -> "%s"' % (oldname, newname) folder = portal._getOb(oldname) fti = folder.getTypeInfo() changeback = False if not fti.global_allow: oldvalue = fti.global_allow changeback = True fti.global_allow = True portal.manage_renameObject(oldname, newname) folder.setTitle(newtitle) if changeback: fti.global_allow = oldvalue elif not newname in obj_ids: print >> out, '-> Creating "%s" folder' % newname ttool = getToolByName(portal, 'portal_types') ttool.constructContent('Large Plone Folder', portal, newname, title=newtitle) print >> out, '-> Setting "%s" as member area folder' % newname mtool = getToolByName(portal, 'portal_membership') mtool.setMembersFolderById(id=newname) if not mtool.getMemberareaCreationFlag(): print >> out, '-> Setting member area creation flag' mtool.setMemberareaCreationFlag() # mark the people folder with an interface pf = getattr(portal, 'people') if not IAmAPeopleFolder.providedBy(pf): alsoProvides(pf, IAmAPeopleFolder) try: from opencore.feed.interfaces import ICanFeed if not ICanFeed.providedBy(pf): alsoProvides(pf, ICanFeed) except ImportError: pass # set the default layout has_index = pf._getOb('index_html', None) if has_index: pf.manage_delObjects(['index_html']) pf.setDefaultPage(None) pf.setLayout('@@view')
def addProjectsFolder(portal, out=None): if not 'projects' in portal.objectIds(): print >> out, 'Creating projects folder' ttool = getToolByName(portal, 'portal_types') ttool.constructContent('Large Plone Folder', portal, 'projects', title='Projects') pfolder = portal._getOb('projects') wftool = getToolByName(portal, 'portal_workflow') pfolder = portal._getOb('projects') alsoProvides(pfolder, IAddProject) try: from opencore.feed.interfaces import ICanFeed if not ICanFeed.providedBy(pfolder): alsoProvides(pfolder, ICanFeed) except ImportError: pass # Add type restrictions print >> out, 'Restricting addable types in Projects Folder' pfolder.setConstrainTypesMode(1) pfolder.setLocallyAllowedTypes(['OpenProject']) pfolder.setImmediatelyAddableTypes(['OpenProject']) # Install default policy pwf_tool = getToolByName(pfolder, 'portal_placeful_workflow') wf_config = get_workflow_policy_config(pfolder) if wf_config is None: print >> out, 'Setting default project security policy to Open' pfolder.manage_addProduct['CMFPlacefulWorkflow'].manage_addWorkflowPolicyConfig() wf_config = get_workflow_policy_config(pfolder) wf_config.setPolicyBelow(policy='open_policy') wf_tool = getToolByName(pfolder, 'portal_workflow') setupProjectLayout(portal, out) setProjectFolderPermissions(portal, out)