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>