--- basket/groups.py 2006/03/19 03:26:56 1.2 +++ basket/groups.py 2006/04/12 19:37:34 1.5 @@ -9,6 +9,26 @@ from types import * from AccessControl import SecurityManagement +import smtplib + +def sendForm(self,fromaddr,subject,content,nextPage="index_html",RESPONSE=None): + """sendform""" + fromaddr=fromaddr.strip("\r\n\t") # sicherstellen dass keine zusaetzlichen headerzeilen eingefuegt werden + subject=subject.strip("\r\n\t") # sicherstellen dass keine zusaetzlichen headerzeilen eingefuegt werden + toaddrs=self.toAddrs + + subject="%s %s"%(self.subjectAdd,subject) + + msg = ("From: %s\r\nSubject: %s\r\nTo: %s\r\n\r\n" + % (fromaddr, subject, ", ".join(toaddrs))) + server = smtplib.SMTP("mail.mpiwg-berlin.mpg.de") + #server.set_debuglevel(1) + msg=msg+content + server.sendmail(fromaddr, toaddrs, msg) + server.quit() + + if RESPONSE: + RESPONSE.redirect(nextPage) class GroupFolder(Folder): """Folder which contains groups""" @@ -21,8 +41,16 @@ class GroupFolder(Folder): #TODO: check if user already exists in LDAP #TODO: email is not registered yet, because MPIWGUserfolder is not working with CookieCrumbler #print [x for x in repr(self.acl_users.getUserNames())] + + if not (len(user.split("@")) ==2): + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddUserErrorInvalidEmail.zpt')).__of__(self) + return pt(user=user) + + if user in repr(self.acl_users.getUserNames()): - return "ERROR: username already exists" + + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddUserErrorAlreadyExists.zpt')).__of__(self) + return pt(user=user) if user and password: #self.acl_users.addUser(user,password,email) @@ -45,23 +73,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 @@ -213,6 +277,11 @@ class Group(SimpleItem): meta_type="Group" + + manage_options=SimpleItem.manage_options+( + {'label':'change group members','action':'changeUsersInGroupForm'}, + ) + def __init__(self,id,description): """init group""" self.id=id @@ -258,6 +327,18 @@ class Group(SimpleItem): """ get Userlist """ return self.userList + def changeUsersInGroupForm(self): + """html form for changing the users""" + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changeUsersInGroup.zpt')).__of__(self) + return pt() + + def changeUsersInGroup(self,userList,RESPONSE=None): + """change group""" + self.userList=userList.split(",")[0:] + + if RESPONSE is not None: + RESPONSE.redirect('manage_main') + def isInGroup(self,username): ''' check if username is in group