Annotation of basket/groups.py, revision 1.1
1.1 ! dwinter 1: """gruppenverwaltung fuer baskets, benutzer koennen verschiedenen gruppen zugeordnet werden"""
! 2:
! 3: from OFS.Folder import Folder
! 4: from OFS.SimpleItem import SimpleItem
! 5: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
! 6: from Globals import package_home
! 7: import os.path
! 8: from types import *
! 9:
! 10: from AccessControl import SecurityManagement
! 11:
! 12: class GroupFolder(Folder):
! 13: """Folder which contains groups"""
! 14:
! 15: meta_type="GroupFolder"
! 16:
! 17: def registerNewUser(self,user,password,email,forward_to=None,RESPONSE=None):
! 18: """register a new user to the system, username and password, will be stored in the acl_users folder,
! 19: additional information are added here."""
! 20:
! 21: #TODO: check if user already exists in LDAP
! 22: #print [x for x in repr(self.acl_users.getUserNames())]
! 23: if user in repr(self.acl_users.getUserNames()):
! 24: return "ERROR: username already exists"
! 25: self.acl_users.addUser(user,password,email)
! 26:
! 27: add="user=%s"%user
! 28: if forward_to.find("?")>-1:
! 29: #already parameters
! 30: add="&"+add
! 31: else:
! 32: add="?"+add
! 33:
! 34: if RESPONSE and forward_to:
! 35: RESPONSE.redirect(forward_to+add)
! 36:
! 37: def isMemberOf(self,group):
! 38: user=SecurityManagement.getSecurityManager().getUser()
! 39:
! 40: if user and not (str(user)=='Anonymous User'):
! 41: return self.checkMembership(str(user), group)
! 42: return False
! 43:
! 44: def addUsersToGroups(self,users,groups):
! 45: """add users to groups
! 46: @param users: list of usernames
! 47: @param groups: list of groupnames
! 48: """
! 49: for user in users:
! 50: self.addUserToGroups(user,groups)
! 51:
! 52:
! 53: def addUserToGroups(self,user,groups):
! 54: '''
! 55: Add a user to a group
! 56: @param user: username
! 57: @param groups: list of groupnames
! 58: '''
! 59:
! 60: #make sure that list of groups
! 61:
! 62: if type(groups) is not ListType:
! 63: groups=[groups]
! 64:
! 65: groupObjects=self.ZopeFind(self,obj_ids=groups)
! 66: #group doesn't exist, return with false
! 67: if len(groupObjects)<1:
! 68: return False
! 69:
! 70: #otherwise add user to group
! 71: for groupObject in groupObjects:
! 72: groupObject[1].addUser(user)
! 73:
! 74: return True
! 75:
! 76: def addGroupsToGroups(self,newGroups,groups):
! 77: """
! 78: add Groups to groups
! 79: @param unewGroups: list of groups to be added
! 80: @param groups: list of groupnames
! 81: """
! 82:
! 83: for group in newGroups:
! 84: self.addGroupToGroups(group,groups)
! 85:
! 86:
! 87: def addGroupToGroups(self,group,groups):
! 88: '''
! 89: Add a user to a group
! 90: @param user: username
! 91: @param groups: list of groupnames
! 92: '''
! 93:
! 94: #make sure that list of groups
! 95:
! 96: if type(groups) is not ListType:
! 97: groups=[groups]
! 98:
! 99: groupObjects=self.ZopeFind(self,obj_ids=groups)
! 100: #group doesn't exist, return with false
! 101: if len(groupObjects)<1:
! 102: return False
! 103:
! 104: #otherwise add user to group
! 105: for groupObject in groupObjects:
! 106: groupObject[1].addGroup(group)
! 107:
! 108: return True
! 109:
! 110: def checkMembership(self,user,group):
! 111: '''Check if user is member of group
! 112:
! 113: @param user:
! 114: @param group:
! 115: '''
! 116:
! 117: groups=self.ZopeFind(self,obj_metatypes=['Group'],obj_ids=[group])
! 118: #group doesn't exist
! 119:
! 120: if len(groups)<1:
! 121: return False
! 122: else:
! 123: print "check",groups[0][0],user,groups[0][1].aq_parent.aq_parent.getId()
! 124: return groups[0][1].isInGroup(user)
! 125:
! 126: def returnUsers(self):
! 127: """return all users of groups"""
! 128:
! 129: users={}
! 130: for group in self.ZopeFind(self,obj_metatypes=['Group']):
! 131: for user in group[1].getUsers():
! 132: if users.has_key(user):
! 133: users[user].append(group[0])
! 134: else:
! 135: users[user]=[group[0]]
! 136:
! 137: return users
! 138:
! 139: def manage_addGroupFolderForm(self):
! 140: """form for adding a groupFolder"""
! 141: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addGroupFolder.zpt')).__of__(self)
! 142: return pt()
! 143:
! 144: def manage_addGroupFolder(self,id,RESPONSE=None):
! 145: """add a group folder object"""
! 146:
! 147:
! 148: newObj=GroupFolder(id)
! 149:
! 150: self._setObject(id,newObj)
! 151: ob=self._getOb(id)
! 152:
! 153:
! 154: #group folder always contains admin,editor,user
! 155:
! 156: manage_addGroup(ob,'admin')
! 157: manage_addGroup(ob,'editor')
! 158: manage_addGroup(ob,'user')
! 159:
! 160: #actual user is always editor and admin
! 161: user=str(self.REQUEST['AUTHENTICATED_USER'])
! 162:
! 163: ob.addUsersToGroups([user],['admin','editor'])
! 164:
! 165: #admin of supergrous are always admins of subgroups
! 166:
! 167: ob.addGroupsToGroups(['admin'],['admin'])
! 168:
! 169: if RESPONSE is not None:
! 170: RESPONSE.redirect('manage_main')
! 171:
! 172:
! 173: class Group(SimpleItem):
! 174: """Group"""
! 175:
! 176: meta_type="Group"
! 177:
! 178: def __init__(self,id,description):
! 179: """init group"""
! 180: self.id=id
! 181: self.description=description
! 182: self.userList=[]
! 183: self.groupList=[]
! 184:
! 185: def addUser(self,username):
! 186: '''
! 187: add an username to the group
! 188: @param username:username
! 189: '''
! 190: #make sure that entry is persistent
! 191: list=self.userList
! 192: list.append(username)
! 193: self.userList=list[0:]
! 194:
! 195: def addGroup(self,group):
! 196: '''
! 197: add a group to the group
! 198: @param group: group to be added
! 199: '''
! 200: #make sure that entry is persistent
! 201: list=self.groupList
! 202: list.append(group)
! 203: self.groupList=list[0:]
! 204:
! 205:
! 206: def getGroups(self):
! 207: """get groups, whose members are automatically members of this group"""
! 208: return self.groupList
! 209:
! 210: def getUsers(self):
! 211: """ get Userlist """
! 212: return self.userList
! 213:
! 214: def isInGroup(self,username):
! 215: '''
! 216: check if username is in group
! 217: @param username: username
! 218: '''
! 219:
! 220: #special handling of group 'user' all users are in user
! 221:
! 222: #TODO: only user which can log in are in 'user'
! 223: if self.id=="user":
! 224: return True
! 225:
! 226: #check first if user is in userList of this group
! 227: print self.userList, username
! 228: if username in self.userList:
! 229: return True
! 230:
! 231: #check now if user is member of one of the groups in grouplist
! 232:
! 233: groupFolders=self.ZopeFind(self.aq_parent,obj_metatypes=['GroupFolder'])
! 234: #no groupFolder im parent
! 235:
! 236: if len(groupFolders)<1:
! 237: return False
! 238:
! 239: #checke all groups in grouplist
! 240: for group in self.ZopeFind(groupFolders[0][1],obj_metatype=['Group'],obj_ids=[self.groupList]):
! 241: if group[1].isInGroup(username):
! 242: return True
! 243:
! 244: return False
! 245:
! 246:
! 247:
! 248: def manage_addGroupForm(self):
! 249: """form for adding a groupFolder"""
! 250: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addGroup.zpt')).__of__(self)
! 251: return pt()
! 252:
! 253: def manage_addGroup(self,id,description='',RESPONSE=None):
! 254: """add a group folder object"""
! 255:
! 256:
! 257: newObj=Group(id,description)
! 258:
! 259: self._setObject(id,newObj)
! 260: ob=self._getOb(id)
! 261:
! 262: if RESPONSE is not None:
! 263: RESPONSE.redirect('manage_main')
! 264:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>