Browse Source

Fix sync_ldap "first name" update and amend other confusing code

Fix #3088 (https://colab.interlegis.leg.br/ticket/3088)
producao
Marcio Mazza 10 years ago
parent
commit
0f6f8b2ca5
  1. 61
      sigi/apps/servidores/management/commands/sync_ldap.py

61
sigi/apps/servidores/management/commands/sync_ldap.py

@ -53,24 +53,17 @@ class Command(BaseCommand):
def sync_users(self):
ldap_users = self.get_ldap_users()
def get_ldap_property(ldap_user, property_name, default_value=None):
value = ldap_user[1].get(property_name, None)
return value[0] if value else default_value
for ldap_user in ldap_users:
try:
username = ldap_user[1]['sAMAccountName'][0]
except:
pass
else:
try:
email = ldap_user[1]['userPrincipalName'][0]
except:
email = ''
try:
first_name = ldap_user[1]['givenName'][0]
except:
first_name = username
try:
last_name = ldap_user[1]['sn'][0][:30]
except:
last_name = ''
username = get_ldap_property(ldap_user, 'sAMAccountName')
if username:
email = get_ldap_property(ldap_user, 'userPrincipalName', '')
first_name = get_ldap_property(ldap_user, 'givenName', username)
last_name = get_ldap_property(ldap_user, 'sn', '')[:30]
try:
user = User.objects.get(username=username)
except User.DoesNotExist:
@ -82,18 +75,23 @@ class Command(BaseCommand):
username=username,
email=email
)
print "User '%s' created." % username
user.first_name = first_name
user.last_name = last_name
print "User '%s' created." % username
try:
nome_completo = ldap_user[1]['cn'][0]
except:
nome_completo = ''
if not user.email == email:
user.email = email
print "User '%s' email updated." % username
if not user.first_name == first_name:
user.first_name = first_name
print "User '%s' first name updated." % username
if not user.last_name == last_name:
user.last_name = last_name
print "User '%s' last name updated." % username
nome_completo = get_ldap_property(ldap_user, 'cn', '').decode('utf8')
try:
servidor = user.servidor
if not servidor.nome_completo == nome_completo.decode('utf8'):
servidor.nome_completo = nome_completo
print "Servidor '%s' updated." % nome_completo
except Servidor.DoesNotExist:
try:
servidor = Servidor.objects.get(nome_completo=nome_completo)
@ -101,15 +99,10 @@ class Command(BaseCommand):
servidor = user.servidor_set.create(nome_completo=nome_completo)
print "Servidor '%s' created." % nome_completo
else:
if not user.email == email.decode('utf8'):
user.email = email
print "User '%s' email updated." % username
if not user.first_name == first_name.decode('utf8'):
user.first_name = first_name
print "User '%s' first name updated." % username
if not user.last_name == last_name.decode('utf8'):
user.last_name = last_name
print "User '%s' last name updated." % username
if not servidor.nome_completo == nome_completo:
servidor.nome_completo = nome_completo
print "Full name of Servidor '%s' updated." % nome_completo
servidor.user = user
servidor.save()
user.save()

Loading…
Cancel
Save