def createMemberarea(self, member_id=None, minimal=None): """ Create a member area for 'member_id' or the authenticated user, but don't assume that member_id is url-safe. """ if not self.getMemberareaCreationFlag(): return None catalog = getToolByName(self, 'portal_catalog') membership = getToolByName(self, 'portal_membership') members = self.getMembersFolder() if not member_id: # member_id is optional (see CMFCore.interfaces.portal_membership: # Create a member area for 'member_id' or authenticated user.) member = membership.getAuthenticatedMember() member_id = member.getId() if hasattr(members, 'aq_explicit'): members=members.aq_explicit if members is None: # no members area logger.debug('createMemberarea: members area does not exist.') return safe_member_id = cleanId(member_id) if hasattr(members, safe_member_id): # has already this member logger.debug( 'createMemberarea: member area ' 'for %r already exists.' % safe_member_id) return if not safe_member_id: # Could be one of two things: # - A Emergency User # - cleanId made a empty string out of member_id logger.debug( 'createMemberarea: empty member id ' '(%r, %r), skipping member area creation.' % ( member_id, safe_member_id)) return # Create member area without security checks typesTool = getToolByName(members, 'portal_types') fti = typesTool.getTypeInfo(self.memberarea_type) member_folder = fti._constructInstance(members, safe_member_id) # Get the user object from acl_users acl_users = getToolByName(self, "acl_users") user = acl_users.getUserById(member_id) if user is not None: user = user.__of__(acl_users) else: 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' member_object = self.getMemberById(member_id) ## Modify member folder member_folder = self.getHomeFolder(member_id) # Grant Ownership and Owner role to Member member_folder.changeOwnership(user) member_folder.__ac_local_roles__ = None member_folder.manage_setLocalRoles(member_id, ['Owner']) # We use ATCT now use the mutators fullname = member_object.getProperty('fullname') member_folder.setTitle(fullname or member_id) member_folder.reindexObject() ## Hook to allow doing other things after memberarea creation. notify_script = getattr(member_folder, 'notifyMemberAreaCreated', None) if notify_script is not None: notify_script()
def createMemberarea(self, member_id=None, minimal=None): """ Create a member area for 'member_id' or the authenticated user, but don't assume that member_id is url-safe. """ if not self.getMemberareaCreationFlag(): return None membership = getToolByName(self, 'portal_membership') members = self.getMembersFolder() if not member_id: # member_id is optional (see CMFCore.interfaces.portal_membership: # Create a member area for 'member_id' or authenticated user.) member = membership.getAuthenticatedMember() member_id = member.getId() if hasattr(members, 'aq_explicit'): members = members.aq_explicit if members is None: # no members area logger.debug('createMemberarea: members area does not exist.') return safe_member_id = cleanId(member_id) if hasattr(members, safe_member_id): # has already this member logger.debug('createMemberarea: member area ' 'for %r already exists.' % safe_member_id) return if not safe_member_id: # Could be one of two things: # - A Emergency User # - cleanId made a empty string out of member_id logger.debug('createMemberarea: empty member id ' '(%r, %r), skipping member area creation.' % (member_id, safe_member_id)) return # Create member area without security checks typesTool = getToolByName(members, 'portal_types') fti = typesTool.getTypeInfo(self.memberarea_type) member_folder = fti._constructInstance(members, safe_member_id) # Get the user object from acl_users acl_users = getToolByName(self, "acl_users") user = acl_users.getUserById(member_id) if user is not None: user = user.__of__(acl_users) else: 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') member_object = self.getMemberById(member_id) # Modify member folder member_folder = self.getHomeFolder(member_id) # Grant Ownership and Owner role to Member member_folder.changeOwnership(user) member_folder.__ac_local_roles__ = None member_folder.manage_setLocalRoles(member_id, ['Owner']) # We use ATCT now use the mutators fullname = member_object.getProperty('fullname') member_folder.setTitle(fullname or member_id) member_folder.reindexObject() # Hook to allow doing other things after memberarea creation. notify_script = getattr(member_folder, 'notifyMemberAreaCreated', None) if notify_script is not None: notify_script()
def createMemberarea(self, member_id=None, minimal=None): """ Create a member area for 'member_id' or the authenticated user, but don't assume that member_id is url-safe. """ if not self.getMemberareaCreationFlag(): return None membership = getToolByName(self, 'portal_membership') members = self.getMembersFolder() if not member_id: # member_id is optional (see CMFCore.interfaces.portal_membership: # Create a member area for 'member_id' or authenticated user.) member = membership.getAuthenticatedMember() member_id = member.getId() fname = member.getProperty('first_name', '').split(' ')[0] if member.getProperty('first_name') else '' mname = member.getProperty('mid_initial', '')[:1] if member.getProperty('mid_initial') else '' lname = member.getProperty('last_name', '') if member.getProperty('last_name') else '' new_id = normalizeString(fname + mname + lname) complete_name = '%s %s. %s' % (fname, mname, lname) if hasattr(members, new_id): #context_id = new_id return else: # Try juandcruz-1, juandcruz-2, etc. idx = 1 while idx <= RENAME_AFTER_CREATION_ATTEMPTS: if idx == 1: new_id1 = "%s" % new_id else: new_id1 = "%s%d" % (new_id, idx-1) if hasattr(members, new_id1): continue else: context_id = new_id1 break; idx += 1 if hasattr(members, 'aq_explicit'): members = members.aq_explicit if members is None: # no members area logger.debug('createMemberarea: members area does not exist.') return safe_member_id = cleanId(context_id).replace('--', '-') if hasattr(members, safe_member_id): # has already this member logger.debug( 'createMemberarea: member area ' 'for %r already exists.' % safe_member_id) return if not safe_member_id: # Could be one of two things: # - A Emergency User # - cleanId made a empty string out of member_id logger.debug( 'createMemberarea: empty member id ' '(%r, %r), skipping member area creation.' % (member_id, safe_member_id) ) return # Create member area without security checks typesTool = getToolByName(members, 'portal_types') fti = typesTool.getTypeInfo(self.memberarea_type) member_folder = fti._constructInstance(members, safe_member_id) # Get the user object from acl_users acl_users = getToolByName(self, "acl_users") user = acl_users.getUserById(member_id) if user is not None: user = user.__of__(acl_users) else: 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' ) # Modify member folder member_folder = self.getHomeFolder(safe_member_id) # Grant Ownership and Owner role to Member member_folder.changeOwnership(user) member_folder.__ac_local_roles__ = None member_folder.manage_setLocalRoles(member_id, ['Owner']) # We use ATCT now use the mutators #member_folder.setTitle(safe_member_id or member_id) #custom Title member_folder.setTitle(complete_name or '') member_folder.reindexObject() # Hook to allow doing other things after memberarea creation. notify_script = getattr(member_folder, 'notifyMemberAreaCreated', None) if notify_script is not None: notify_script()