--- basket/groups.py 2006/04/03 18:19:45 1.3 +++ basket/groups.py 2006/04/06 16:49:14 1.4 @@ -45,23 +45,59 @@ class GroupFolder(Folder): return self.checkMembership(str(user), group) return False - def addKommaListOfUsersToGroup(self,users,group,REQUEST=None,RESPONSE=None): + def addKommaListOfUsersToGroup(self,users,group,remove=None,REQUEST=None,RESPONSE=None): """add users to a group, users in komma separeted list""" - usersList=users.split(",") - self.addUsersToGroups(usersList,group) + usersList=[x.lstrip().rstrip() for x in users.split(",")] + + self.addUsersToGroups(usersList,group,remove) if RESPONSE: RESPONSE.redirect(REQUEST['HTTP_REFERER']) - def addUsersToGroups(self,users,groups): + def addUsersToGroups(self,users,groups,remove=None): """add users to groups @param users: list of usernames @param groups: list of groupnames + @param remove: default None, if remove is set the actual + user list of the groups will be replaced by users otherwise users will be added. + if remove= protected then the actualuser can not be deleted. """ + + if type(groups) is not ListType: + groups=[groups] + for user in users: self.addUserToGroups(user,groups) + if remove: + for group in groups: + for user in self.getGroupsAndUsers().get(group,None): + if (user not in users): + if not ((remove=="protected") and (user==self.getActualUserName())): + self.removeUserFromGroups(user,group) + + def removeUserFromGroups(self,user,groups): + ''' + remove a user from a group + @param user: username + @param groups: list of groupnames + ''' + + #make sure that list of groups + print "remove",user,repr(groups) + + if type(groups) is not ListType: + groups=[groups] + + groupObjects=self.ZopeFind(self,obj_ids=groups) + #group doesn't exist, return with false + if len(groupObjects)<1: + return False + #otherwise add user to group + for groupObject in groupObjects: + groupObject[1].removeUser(user) + def addUserToGroups(self,user,groups): ''' Add a user to a group