160 lines
5.5 KiB
Python
Executable file
160 lines
5.5 KiB
Python
Executable file
#! /usr/bin/python
|
|
|
|
if __name__ == '__main__':
|
|
import sys
|
|
sys.path.append('/usr/scripts/gestion')
|
|
from ldap_crans import crans_ldap
|
|
ldap = crans_ldap()
|
|
|
|
import connection
|
|
from proprio import Proprio
|
|
from comptes import CompteUnix
|
|
from local import Local
|
|
from comptes import Attribut
|
|
from comptes import GroupeUnix
|
|
|
|
|
|
adherents_ldap = ldap.search('nom=*')['adherent'] # Pour les tests, on ne selectionne que les nounous
|
|
#adherents_ldap = []
|
|
for adherent_ldap in adherents_ldap:
|
|
|
|
data = adherent_ldap._data
|
|
|
|
args = {}
|
|
|
|
args['categorie'] = u'adherent'
|
|
args['id_ldap'] = int(adherent_ldap.id())
|
|
args['nom'] = adherent_ldap.nom()
|
|
args['prenom'] = adherent_ldap.prenom()
|
|
args['titre'] = None
|
|
args['naissance'] = None
|
|
|
|
|
|
args['adresse1'] = adherent_ldap.adresse()[0]
|
|
args['adresse2'] = adherent_ldap.adresse()[1]
|
|
args['code_postal'] = adherent_ldap.adresse()[2]
|
|
args['ville'] = adherent_ldap.adresse()[3]
|
|
args['pays'] = None
|
|
|
|
args['telephone'] = adherent_ldap.tel()
|
|
args['email'] = adherent_ldap.email()
|
|
|
|
args['etablissement'] = adherent_ldap.etudes(0)
|
|
args['annee_etudes'] = adherent_ldap.etudes(1)
|
|
args['filiere'] = adherent_ldap.etudes(2)
|
|
|
|
args['remarques'] = '\n'.join(adherent_ldap.info())
|
|
args['fictif'] = False
|
|
args['responsableID'] = None
|
|
|
|
selection = Proprio.select(Proprio.q.id_ldap == adherent_ldap.id())
|
|
if selection.count() == 0:
|
|
proprio_pg = Proprio(**args)
|
|
else:
|
|
proprio_pg = selection[0]
|
|
proprio_pg.set(**args)
|
|
|
|
if 'uid' in adherent_ldap._data:
|
|
args = {}
|
|
args['proprioID'] = proprio_pg.id
|
|
args['username'] = adherent_ldap.mail()
|
|
args['passwd'] = '!'
|
|
args['uid'] = int(adherent_ldap._data['uidNumber'][0])
|
|
args['homedir'] = adherent_ldap._data['homeDirectory'][0]
|
|
args['shell'] = adherent_ldap._data['loginShell'][0]
|
|
args['gecos'] = adherent_ldap._data['gecos'][0]
|
|
args['gid'] = 3
|
|
args['solde'] = adherent_ldap.solde()
|
|
|
|
selection = CompteUnix.select(CompteUnix.q.proprioID == proprio_pg.id)
|
|
if selection.count() == 0:
|
|
compte_pg = CompteUnix(**args)
|
|
else:
|
|
compte_pg = selection[0]
|
|
compte_pg.set(**args)
|
|
|
|
|
|
for droit in adherent_ldap.droits():
|
|
selection = Attribut.select(Attribut.q.nom == droit)
|
|
if selection.count() == 0:
|
|
attribut = Attribut(nom=droit)
|
|
else:
|
|
attribut = selection[0]
|
|
if attribut not in compte_pg.attributs:
|
|
compte_pg.addAttribut(attribut)
|
|
|
|
|
|
print adherent_ldap.nom()
|
|
|
|
clubs_ldap = ldap.search('cid=*')['club'] # Pour les tests, on ne selectionne que les nounous
|
|
for club_ldap in clubs_ldap:
|
|
|
|
data = club_ldap._data
|
|
|
|
args = {}
|
|
|
|
args['categorie'] = u'club'
|
|
args['id_ldap'] = int(club_ldap.id())
|
|
args['nom'] = club_ldap.nom()
|
|
args['prenom'] = None
|
|
args['titre'] = None
|
|
args['naissance'] = None
|
|
|
|
|
|
args['adresse1'] = None
|
|
args['adresse2'] = None
|
|
args['code_postal'] = None
|
|
args['ville'] = None
|
|
args['pays'] = None
|
|
|
|
args['telephone'] = None
|
|
args['email'] = None
|
|
|
|
args['etablissement'] = None
|
|
args['annee_etudes'] = None
|
|
args['filiere'] = None
|
|
|
|
args['remarques'] = '\n'.join(club_ldap.info())
|
|
args['fictif'] = False
|
|
args['responsableID'] = Proprio.select(Proprio.q.id_ldap == club_ldap._data['responsable'][0])[0].id
|
|
|
|
selection = Proprio.select(Proprio.q.id_ldap == club_ldap.id())
|
|
if selection.count() == 0:
|
|
proprio_pg = Proprio(**args)
|
|
else:
|
|
proprio_pg = selection[0]
|
|
proprio_pg.set(**args)
|
|
|
|
if 'uid' in club_ldap._data:
|
|
args = {}
|
|
args['proprioID'] = proprio_pg.id
|
|
args['username'] = club_ldap._data['uid']
|
|
args['passwd'] = '!'
|
|
args['uid'] = int(club_ldap._data['uidNumber'][0])
|
|
args['homedir'] = club_ldap._data['homeDirectory'][0]
|
|
args['shell'] = club_ldap._data['loginShell'][0]
|
|
args['gecos'] = None
|
|
args['gid'] = 3
|
|
args['solde'] = club_ldap.solde()
|
|
|
|
selection = CompteUnix.select(CompteUnix.q.proprioID == proprio_pg.id)
|
|
if selection.count() == 0:
|
|
compte_pg = CompteUnix(**args)
|
|
else:
|
|
compte_pg = selection[0]
|
|
compte_pg.set(**args)
|
|
|
|
|
|
print club_ldap.nom()
|
|
|
|
|
|
|
|
nounou = Attribut.select(Attribut.q.nom == u'Nounou')[0]
|
|
selection = GroupeUnix.select(GroupeUnix.q.nom == 'ssh_partout')
|
|
if selection.count() == 0:
|
|
ssh_partout = GroupeUnix(nom='ssh_partout', gid=200, descr='Groupes des utilisateur autorises a se logger partout')
|
|
else:
|
|
ssh_partout = selection[0]
|
|
if ssh_partout not in nounou.groupes_unix:
|
|
nounou.addGroupeUnix(ssh_partout)
|
|
|