Revisión 64
Añadido por Manu Mora Gordillo hace alrededor de 14 años
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
Gestion de usuarios: ya inserta/modifica/borra los grupos