Proyecto

General

Perfil

« Anterior | Siguiente » 

Revisión 64

Gestion de usuarios: ya inserta/modifica/borra los grupos

Ver diferencias:

Users.py
def add(self):
maxID = str(self.getMaxID(l))
maxID = str(self.getMaxID())
passwd = hashlib.sha1(self.password).hexdigest()
attr = [
......
]
self.ldap.add("uid="+self.user+",ou=People", attr)
# Add private group
attr = [
('objectclass', ['top','posixGroup','lisGroup']),
('grouptype', ['private']),
('gidnumber', [maxID] ),
('cn', [self.user] ),
('description', [self.name+' personal group'] )
]
self.ldap.add("cn="+self.user+",ou=Group", attr)
# Add selected groups
attr = [
(ldap.MOD_ADD, 'member', ['uid='+self.user+',ou=People,dc=instituto,dc=extremadura,dc=es'] ),
(ldap.MOD_ADD, 'memberUid', [self.user] )
]
for n in self.departments:
self.ldap.modify('cn='+ n +',ou=Group', attr)
for n in self.classrooms:
self.ldap.modify('cn='+ n +',ou=Group', attr)
return "OK"
......
(ldap.MOD_REPLACE, 'userpassword', [passwd])
]
#self.ldap.modify("uid="+self.user+",ou=People", attr)
self.ldap.modify("uid="+self.user+",ou=People", attr)
#Modify groups
# Get current groups
currentGroups = self.getUserGroups()
#sameGroups = set(currentGroups["departments"]) & set(self.departments)
deleteGroups = set(currentGroups["departments"]).difference(set(self.departments))
# Delete unselected groups
deleteDepartments = set(currentGroups["departments"]).difference(set(self.departments))
deleteClassrooms = set(currentGroups["classrooms"]).difference(set(self.classrooms))
attr = [
(ldap.MOD_DELETE, 'member', ['uid='+self.user+',ou=People,dc=instituto,dc=extremadura,dc=es'] ),
(ldap.MOD_DELETE, 'memberUid', [self.user] )
]
for d in deleteGroups:
self.ldap.delete('cn='+ d +',ou=Group')
newGroups = set(self.departments).difference(currentGroups["departments"])
for d in deleteDepartments:
self.ldap.modify('cn='+ d +',ou=Group', attr)
for d in deleteClassrooms:
self.ldap.modify('cn='+ d +',ou=Group', attr)
# Add selected groups
newDepartments = set(self.departments).difference(currentGroups["departments"])
newClassrooms = set(self.classrooms).difference(currentGroups["classrooms"])
#print deleteGroups
#print newGroups
attr = [
(ldap.MOD_ADD, 'member', ['uid='+self.user+',ou=People,dc=instituto,dc=extremadura,dc=es'] ),
(ldap.MOD_ADD, 'memberUid', [self.user] )
]
for n in newDepartments:
self.ldap.modify('cn='+ n +',ou=Group', attr)
for n in newClassrooms:
self.ldap.modify('cn='+ n +',ou=Group', attr)
return "OK"
def delete(self):
self.ldap.delete('uid='+ self.user +',ou=People')
self.ldap.delete("cn="+self.user+",ou=Group")
# Delete unselected groups
currentGroups = self.getUserGroups()
attr = [
(ldap.MOD_DELETE, 'member', ['uid='+self.user+',ou=People,dc=instituto,dc=extremadura,dc=es'] ),
(ldap.MOD_DELETE, 'memberUid', [self.user] )
]
def getMaxID(self,l): # find the maximum ID
for d in currentGroups["departments"]:
self.ldap.modify('cn='+ d +',ou=Group', attr)
for d in currentGroups["classrooms"]:
self.ldap.modify('cn='+ d +',ou=Group', attr)
return "OK"
def getMaxID(self): # find the maximum ID
result = self.ldap.search("ou=Group","cn=*",["gidNumber"])
numbers = []
for i in result:

Exportar a: Unified diff