[config,{gest,ldap}_crans,gen_confs/] Modifications systeme droits
* gest_crans.py :: Dialogue permettant de desabonner les gens des MLs lorsqu'on leur enleve des droits (les gens ne sont pas desabonnes automatiquement de certaines MLs a l'enlevement des droits, il propose de le faire quand meme) => gest_crans.complexite++ * config.py :: Deplacement des definitions droits <-> {MLs, groupes unix} depuis droits.py * droits.py :: Ajout de fonctionnalites : * -d pour supprimer certaines adresses mail de certaines MLs * -u pour afficher les MLs inscrites non-automatiquement a certaines MLs * ldap_crans.py :: Les droits ne contiennent plus d'accents depuis un moment darcs-hash:20100319001432-ddb99-f0d337d161b8d95e6b6300cd53efbae8b9a7e834.gz
This commit is contained in:
parent
61302647c9
commit
392006237d
5 changed files with 261 additions and 107 deletions
|
@ -564,13 +564,64 @@ def set_droits(adher):
|
|||
annul, result = dialog(arg)
|
||||
if annul: return 1
|
||||
|
||||
|
||||
# Traitement
|
||||
# Dans le cas ou l'utilisateur qui modiifie n'est pas nounou
|
||||
### Traitement
|
||||
# Dans le cas où l'utilisateur qui modifie n'est pas nounou, on ajoute les
|
||||
# droits critiques que l'adhérent possède déjà
|
||||
if not isadm:
|
||||
for key in [d for d in droits_critiques if key in adher.droits()]:
|
||||
result.append(key.encode("ISO-8859-15"))
|
||||
|
||||
# On regarde les MLs auxquelles l'adhérent était inscrit grâce à ses
|
||||
# droits et auxquelles il ne sera pas désabonné
|
||||
# (MLs à débonnement manuel)
|
||||
droits_mls = config.droits_mailing_listes
|
||||
|
||||
# On nettoie la sortie de dialog
|
||||
new = []
|
||||
for droit in result:
|
||||
droit = droit.strip()
|
||||
if droit == '': continue
|
||||
if droit not in droits_possibles:
|
||||
raise ValueError(u'Droit %s incorrect' % droit)
|
||||
new.append(droit)
|
||||
|
||||
# Droits supprimés
|
||||
diff = [droit for droit in adher.droits()
|
||||
if droit not in new]
|
||||
|
||||
# Droits supprimés qui abonnaient à une ML
|
||||
old_mls = []
|
||||
for droit in diff:
|
||||
old_mls.extend([m for m in droits_mls
|
||||
if m[0] == '+' and droit in droits_mls[m]
|
||||
and m not in old_mls])
|
||||
|
||||
# MLs pour lesquelles un autre droit abonne encore
|
||||
for droit in new:
|
||||
for ml in [m for m in old_mls if droit in droits_mls[m]]:
|
||||
old_mls.pop(ml)
|
||||
|
||||
# Choix des MLs auxquelles débonner
|
||||
if old_mls:
|
||||
arg = u'--title "Mailing-listes dont désabonner %s" ' % adher.Nom()
|
||||
arg += u'--separate-output '
|
||||
arg += u'--checklist "%s a été abonné automatiquement' % adher.Nom()
|
||||
arg += u' aux MLs suivantes lorsqu\'il a obtenu ses droits." 0 0 0 '
|
||||
for ml in old_mls:
|
||||
arg += u'"%s" " " "" ' % ml[1:]
|
||||
annulmls, resultmls = dialog(arg)
|
||||
if annulmls: resultmls = []
|
||||
del_mls = []
|
||||
for resml in resultmls:
|
||||
if resml == '': continue
|
||||
del_mls.append(resml.strip())
|
||||
|
||||
if del_mls:
|
||||
db.services_to_restart('desabonner_ml',
|
||||
map(lambda m: "%s$%s" % (adher.mail(), m), resultmls))
|
||||
|
||||
# On modifie !
|
||||
if not isadm:
|
||||
for key in droits_critiques:
|
||||
if key in adher.droits():
|
||||
result.append(key.encode("ISO-8859-15"))
|
||||
adher.droits(result, light=True)
|
||||
else:
|
||||
adher.droits(result)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue