def createMemberarea(self, member_id): """ Create a member area for 'member_id'. """ members = self.getMembersFolder() if members is not None and not hasattr( aq_base(members), member_id ): f_title = "%s's Home" % member_id members.manage_addPortalFolder( id=member_id, title=f_title ) f=getattr(members, member_id) acl_users = self.__getPUS() user = acl_users.getUser(member_id) if user is not None: user= user.__of__(acl_users) else: from AccessControl import getSecurityManager user= getSecurityManager().getUser() # check that we do not do something wrong if user.getId() != member_id: raise NotImplementedError, \ 'cannot get user for member area creation' # Grant Ownership and Owner role to Member f.changeOwnership(user) f.__ac_local_roles__ = None f.manage_setLocalRoles(member_id, ['Owner']) # Create Member's home page. # DEFAULT_MEMBER_CONTENT ought to be configurable per # instance of MembershipTool. addDocument( f , 'index_html' , member_id+"'s Home" , member_id+"'s front page" , "structured-text" , (DEFAULT_MEMBER_CONTENT % member_id) ) # Grant Ownership and Owner role to Member f.index_html.changeOwnership(user) f.index_html.__ac_local_roles__ = None f.index_html.manage_setLocalRoles(member_id, ['Owner']) f.index_html._setPortalTypeName( 'Document' ) # Overcome an apparent catalog bug. f.index_html.reindexObject() wftool = getToolByName( f, 'portal_workflow' ) wftool.notifyCreated( f.index_html )
def createMemberArea(self, member_id=''): """ Create a member area for 'member_id' or authenticated user. """ if not self.getMemberareaCreationFlag(): return None members = self.getMembersFolder() if members is None: return None if self.isAnonymousUser(): return None # Note: We can't use getAuthenticatedMember() and getMemberById() # because they might be wrapped by MemberDataTool. user = _getAuthenticatedUser(self) user_id = user.getId() if member_id in ('', user_id): member = user member_id = user_id else: if _checkPermission(ManageUsers, self): member = self.acl_users.getUserById(member_id, None) if member: member = member.__of__(self.acl_users) else: raise ValueError, 'Member %s does not exist' % member_id else: return None if hasattr(aq_base(members), member_id): return None # Note: We can't use invokeFactory() to add folder and content because # the user might not have the necessary permissions. # Create Member's home folder. members.manage_addPortalFolder(id=member_id, title="%s's Home" % member_id) f = members._getOb(member_id) # Grant Ownership and Owner role to Member f.changeOwnership(member) f.__ac_local_roles__ = None f.manage_setLocalRoles(member_id, ['Owner']) # Create Member's initial content. if hasattr(self, 'createMemberContent'): self.createMemberContent(member=member, member_id=member_id, member_folder=f) else: addDocument(f, 'index_html', member_id + "'s Home", member_id + "'s front page", "structured-text", (DEFAULT_MEMBER_CONTENT % member_id)) # Grant Ownership and Owner role to Member f.index_html.changeOwnership(member) f.index_html.__ac_local_roles__ = None f.index_html.manage_setLocalRoles(member_id, ['Owner']) f.index_html._setPortalTypeName('Document') f.index_html.reindexObject() f.index_html.notifyWorkflowCreated() return f
def createMemberArea(self, member_id=''): """ Create a member area for 'member_id' or authenticated user. """ if not self.getMemberareaCreationFlag(): return None members = self.getMembersFolder() if not members: return None if self.isAnonymousUser(): return None # Note: We can't use getAuthenticatedMember() and getMemberById() # because they might be wrapped by MemberDataTool. user = _getAuthenticatedUser(self) user_id = user.getId() if member_id in ('', user_id): member = user member_id = user_id else: if _checkPermission(ManageUsers, self): member = self.acl_users.getUserById(member_id, None) if member: member = member.__of__(self.acl_users) else: raise ValueError, 'Member %s does not exist' % member_id else: return None if hasattr( aq_base(members), member_id ): return None # Note: We can't use invokeFactory() to add folder and content because # the user might not have the necessary permissions. # Create Member's home folder. members.manage_addPortalFolder(id=member_id, title="%s's Home" % member_id) f = members._getOb(member_id) # Grant Ownership and Owner role to Member f.changeOwnership(member) f.__ac_local_roles__ = None f.manage_setLocalRoles(member_id, ['Owner']) # Create Member's initial content. if hasattr(self, 'createMemberContent'): self.createMemberContent(member=member, member_id=member_id, member_folder=f) else: addDocument( f , 'index_html' , member_id+"'s Home" , member_id+"'s front page" , "structured-text" , (DEFAULT_MEMBER_CONTENT % member_id) ) # Grant Ownership and Owner role to Member f.index_html.changeOwnership(member) f.index_html.__ac_local_roles__ = None f.index_html.manage_setLocalRoles(member_id, ['Owner']) f.index_html._setPortalTypeName( 'Document' ) f.index_html.reindexObject() f.index_html.notifyWorkflowCreated() return f