scripts/archive/bdd/migration.py

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)