Import initial !
darcs-hash:20040831131446-d1718-0734aa73d3b8481b3b4b861e447e85128e488e8a.gz
This commit is contained in:
parent
c9083dfd86
commit
6626a44f15
20 changed files with 6494 additions and 0 deletions
80
gestion/gen_confs/droits.py
Executable file
80
gestion/gen_confs/droits.py
Executable file
|
@ -0,0 +1,80 @@
|
|||
#! /usr/bin/env python
|
||||
# -*- coding: iso-8859-15 -*-
|
||||
|
||||
import sys, signal
|
||||
from gen_confs import gen_config, anim, cprint, OK, ERREUR
|
||||
|
||||
sys.path.append('/usr/scripts/gestion')
|
||||
from ldap_crans import crans_ldap, crans, ann_scol, preattr, ldap
|
||||
|
||||
class droits(crans_ldap,gen_config) :
|
||||
####### Les groupes
|
||||
base_group_dn = 'ou=Group,dc=crans,dc=org'
|
||||
|
||||
# Quels droits donnent l'appartenacne à quel groupe ?
|
||||
groupes = { 'adm' : [ u'Nounou' ] ,
|
||||
'respbats' : [ u'Câbleur' , u'Déconnecteur', u'Nounou' ] ,
|
||||
'moderateurs' : [ u'Modérateur' ] ,
|
||||
'disconnect' : [ u'Déconnecteur' ] ,
|
||||
'webcvs' : [ u'CVSWeb'] }
|
||||
|
||||
####### Les ML
|
||||
# Le + devant un nom de ML indique une synchronisqtion
|
||||
# ML <-> fonction partielle : il n'y a pas d'effacement
|
||||
# des abonnés si le droit est retiré
|
||||
mailing_listes = { 'roots' : [ u'Nounou', u'Apprenti' ],
|
||||
'+nounou' : [ u'Nounou', u'Apprenti' ],
|
||||
'respbats' : [ u'Câbleur', u'Nounou' ],
|
||||
'moderateurs' : [ u'Modérateur' ],
|
||||
'disconnect' : [ u'Déconnecteur' ] }
|
||||
|
||||
def restart(s) :
|
||||
# Rien à faire
|
||||
pass
|
||||
|
||||
def __str__(self):
|
||||
return "droits"
|
||||
|
||||
def build_group(self) :
|
||||
""" Reconstruit les groupes dans la base LDAP """
|
||||
self.anim.iter = len( self.groupes.keys() )
|
||||
for group, fonctions in self.groupes.items() :
|
||||
self.anim.cycle()
|
||||
# Qui doit être dans ce groupe ?
|
||||
res = []
|
||||
for f in fonctions :
|
||||
res += self.search('droits=%s' % f)['adherent']
|
||||
|
||||
# Récupération de la constitution du groupe actuel
|
||||
dn = 'cn=%s,%s' % (group, self.base_group_dn)
|
||||
data = self.conn.search_s(dn ,0,'objectClass=posixGroup')[0][1]
|
||||
init_data = data.copy()
|
||||
|
||||
# Supression de tout les membres
|
||||
data['memberUid'] = []
|
||||
|
||||
# Ajout des bonnes personnes
|
||||
for adher in res :
|
||||
uid = preattr(adher.compte())[1]
|
||||
if uid and uid not in data['memberUid'] :
|
||||
data['memberUid'].append(uid)
|
||||
|
||||
# Sauvegarde
|
||||
modlist = ldap.modlist.modifyModlist(init_data,data)
|
||||
self.conn.modify_s(dn,modlist)
|
||||
|
||||
def gen_conf(self) :
|
||||
self.anim = anim('\tconfiguration groupes')
|
||||
try :
|
||||
self.build_group()
|
||||
self.anim.reinit()
|
||||
print OK
|
||||
except :
|
||||
self.anim.reinit()
|
||||
print ERREUR
|
||||
if self.debug :
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
|
||||
self.anim = anim('\tconfiguration ML Crans')
|
||||
print 'TODO'
|
Loading…
Add table
Add a link
Reference in a new issue