Prise en charge de l'attribut mailExterieur comme redirection.

This commit is contained in:
Pierre-Elliott Bécue 2015-02-18 19:58:33 +01:00
parent 60d7087c60
commit 962d9df0f3
5 changed files with 100 additions and 54 deletions

View file

@ -2043,34 +2043,18 @@ class BaseProprietaire(BaseClasseCrans):
# Faut-il créer un compte sur vert ?
if 'compte' in self.modifs:
ret += u'\nUn compte a été créé :\n login : %s\n' % self.compte()
args = self._data['homeDirectory'][0] + ','
args+= self._data['uidNumber'][0] + ','
args+= self._data['uid'][0]
r = prompt(u"Attribuer tout de suite un mot de passe ? [O/N]", "O")
if r == 'O' or r == 'o':
change_password(login=self.compte())
else:
ret += coul(u' Il faudra penser à attribuer un mot de passe\n', 'jaune')
compte = self._data.get('uid', [''])[0]
if compte:
ret += u'\nUn compte a été créé :\n login : %s\n' % self.compte()
r = prompt(u"Attribuer tout de suite un mot de passe ? [O/N]", "O")
if r == 'O' or r == 'o':
change_password(login=self.compte())
else:
ret += coul(u' Il faudra penser à attribuer un mot de passe\n', 'jaune')
# Le deuxième argument est le potentiel chemin de l'ancien compte
# s'il a jamais existé, ça permet de supprimer le home associé.
args = "%s,%s" % (compte, self.modifs.get('compte', ''))
r = prompt(u"Redirection mail ? [O/N]")
mail1 = mail2 = None
if r.lower().startswith('o'):
while True:
mail1 = prompt(u"Adresse mail ? (ANNUL pour annuler la redirection)")
if mail1 == "ANNUL":
mail1 = None
break
try:
validate_mail(mail1)
except ValueError, e:
print coul(e.message.encode('utf-8'), 'rouge')
continue
mail2 = prompt(u"Adresse mail (répéter) ?")
if mail1 == mail2 and mail1:
break
if mail1:
args += ',' + mail1
self.services_to_restart('home', [ args ])
# Modif des droits ?
@ -2269,7 +2253,7 @@ class Adherent(BaseProprietaire):
if new == None:
email = self._data.get('mail', [''])[0]
if not '@' in email:
return decode(email)+'@crans.org'
return decode(email) + '@crans.org'
else:
return decode(email)
@ -2451,6 +2435,8 @@ class Adherent(BaseProprietaire):
raise ValueError(u"Le solde d'un adhérent doit être nul pour supprimer son compte crans.")
self._data['objectClass'] = ['adherent']
if not 'compte' in self.modifs:
self.modifs['compte'] = "%s,%s" % (self.compte(), self.home())
for c in [ 'uid', 'cn', 'shadowLastChange', 'shadowMax',
'shadowWarning', 'loginShell', 'userPassword',
'uidNumber', 'gidNumber', 'homeDirectory', 'gecos',
@ -2567,7 +2553,7 @@ class Adherent(BaseProprietaire):
self._data['mail'] = ["%s@crans.org" % (login)]
if not 'compte' in self.modifs:
self.modifs.setdefault('compte', None)
self.modifs.setdefault('compte', '')
# Création de l'alias canonique
if self.nom() and self.prenom():
@ -2904,7 +2890,7 @@ class Club(BaseProprietaire):
self.lock('mail', login)
if not 'compte' in self.modifs:
self.modifs.setdefault('compte', None)
self.modifs.setdefault('compte', '')
self._data['objectClass'] = ['club', 'cransAccount', 'posixAccount', 'shadowAccount']
self._data['uid'] = [ login ]