Modified getting information about users from the LDAP and bugfix create link

develop
Самоукин Алексей 14 years ago
parent e358500edb
commit 23ccd6a030

@ -144,7 +144,7 @@ class ldapUser(_error):
return groupsDNs return groupsDNs
return False return False
def getUserLdapInfo(self, userName): def getUserLdapInfo(self, userName, shadowAttr=False):
"""Выдаем информацию о пользователе из LDAP""" """Выдаем информацию о пользователе из LDAP"""
connectData = self.getBindConnectData() connectData = self.getBindConnectData()
if not connectData: if not connectData:
@ -159,39 +159,59 @@ class ldapUser(_error):
"uid=%s" %userName, None) "uid=%s" %userName, None)
if not searchUser: if not searchUser:
return False return False
uid = False convertDict = {'uid':('user','uidNumber'),
gid = False 'gid':('user','gidNumber'),
fullName = "" 'fullName':('user','cn'),
mail = "" 'mail':('user','mail'),
jid = "" 'jid':('user','registeredAddress'),
group = "" 'home':('user','homeDirectory'),
if 'uidNumber' in searchUser[0][0][1]: 'group':('group','cn')}
uid = searchUser[0][0][1]['uidNumber'][0] if shadowAttr:
if 'gidNumber' in searchUser[0][0][1]: convertDict.update({'loginShell':('user','loginShell'),
gid = searchUser[0][0][1]['gidNumber'][0] 'shadowLastChange':('user','shadowLastChange'),
for groupDN in groupsDNs: 'shadowMin':('user','shadowMin'),
searchGroup = self.ldapObj.ldapSearch(groupDN, 'shadowMax':('user','shadowMax'),
'shadowWarning':('user','shadowWarning'),
'shadowExpire':('user','shadowExpire'),
'shadowFlag':('user','shadowFlag')})
listUserAttr = map(lambda x: x[0],
filter(lambda x: x[1][0]=="user",
convertDict.items()))
listGroupAttr = map(lambda x: x[0],
filter(lambda x: x[1][0]=="group",
convertDict.items()))
uid = ""
gid = ""
dictOut = {}
for dictAttr in listUserAttr:
ldapAttr = convertDict[dictAttr][1]
if ldapAttr in searchUser[0][0][1]:
dictOut[dictAttr] = searchUser[0][0][1][ldapAttr][0]
else:
dictOut[dictAttr] = ""
if dictAttr == 'uid':
uid = dictOut[dictAttr]
if dictAttr == 'gid':
gid = dictOut[dictAttr]
if gid:
for dictAttr in listGroupAttr:
searchGroup = []
ldapAttr = convertDict[dictAttr][1]
for groupDN in groupsDNs:
searchGroup = self.ldapObj.ldapSearch(groupDN,
ldap.SCOPE_ONELEVEL, ldap.SCOPE_ONELEVEL,
"gidNumber=%s" %gid, ['cn']) "gidNumber=%s" %gid, None)
if searchGroup:
break
if searchGroup: if searchGroup:
group = searchGroup[0][0][1]['cn'][0] if ldapAttr in searchGroup[0][0][1]:
break dictOut[dictAttr] = searchGroup[0][0][1][ldapAttr][0]
if 'cn' in searchUser[0][0][1]: else:
fullName = searchUser[0][0][1]['cn'][0] dictOut[dictAttr] = ""
if 'mail' in searchUser[0][0][1]: else:
mail = searchUser[0][0][1]['mail'][0] dictOut[dictAttr] = ""
if 'registeredAddress' in searchUser[0][0][1]:
jid = searchUser[0][0][1]['registeredAddress'][0]
if 'homeDirectory' in searchUser[0][0][1]:
home = searchUser[0][0][1]['homeDirectory'][0]
if uid and gid: if uid and gid:
return {"uid":uid, return dictOut
"gid":gid,
"fullName":fullName,
"mail":mail,
"jid":jid,
"home":home,
"group":group}
else: else:
return {} return {}

@ -4208,6 +4208,13 @@ re.M|re.S)
preReturn(pathProg) preReturn(pathProg)
return ([], False) return ([], False)
if flagSymlink: if flagSymlink:
if objHeadNew.body.strip():
self.setError(_("Error in template") + ": " +\
nameFileTemplate)
self.setError(_("In template to create a link is found text \
after title"))
preReturn(pathProg)
return ([], False)
if os.path.exists(prevOldFile) or os.path.islink(prevOldFile): if os.path.exists(prevOldFile) or os.path.islink(prevOldFile):
try: try:
if os.path.islink(prevOldFile): if os.path.islink(prevOldFile):
@ -4236,9 +4243,6 @@ re.M|re.S)
"%s -> %s"%(prevOldFile, pathOldFile)) "%s -> %s"%(prevOldFile, pathOldFile))
preReturn(pathProg) preReturn(pathProg)
return ([], False) return ([], False)
if not objHeadNew.body.strip():
preReturn(pathProg)
return ([], False)
else: else:
applyFiles = [pathOldFile] applyFiles = [pathOldFile]
if pathProg: if pathProg:

Loading…
Cancel
Save