Synchro-courriel : déplacement dans un dossier
authorWilly MANGA <willy.manga@auf.org>
Sat, 22 Oct 2016 04:30:39 +0000 (05:30 +0100)
committerWilly MANGA <willy.manga@auf.org>
Sat, 22 Oct 2016 04:30:39 +0000 (05:30 +0100)
scripts/synchro-courriel/syncmdp.py [new file with mode: 0644]
scripts/syncmdp.py [deleted file]

diff --git a/scripts/synchro-courriel/syncmdp.py b/scripts/synchro-courriel/syncmdp.py
new file mode 100644 (file)
index 0000000..5db1dc5
--- /dev/null
@@ -0,0 +1,166 @@
+#/usr/bin/env python
+# -*- coding:utf-8 -*-
+
+"""
+L'objectif est de synchroniser
+les mots de passe des personnels
+d'une table vers une autre
+à intervalle régulier
+"""
+
+import MySQLdb
+
+from _mysql_exceptions import *
+from getpass import getpass
+
+passwd = getpass('Mot de passe bd: ')
+host = 'localhost'
+db = 'bacgl'
+user = 'willy'
+
+#TODO vraiment gérer les exceptions parce que pour le moment ... :P
+
+c_db = MySQLdb.connect(host,user,passwd,db)
+#initialisation pour le côté sogo
+c = c_db.cursor()
+
+#initialisation pour le côté local
+d = c_db.cursor()
+
+#Plusieurs cas de figure
+#on veut récupérer d'abord consulter les infos à l'origine
+
+pays_region = ['cm','ga','bi','cd','cg','cf','td']
+BACGL_pays = {'cm': 'Cameroun',
+        'ga': 'Gabon',
+        'bi': 'Bujumbura',
+        'cd': 'République démocratique du Congo',
+        'cg': 'Congo',
+        'cf': 'Centrafrique',
+        'td': 'Tchad',
+        }
+
+t1_champIdentifiant = 'c_uid'
+t1_champMdp = 'c_password'
+t1_table = 'auf_users'
+requete = 'SELECT  %s,%s from %s' % (t1_champIdentifiant,
+        t1_champMdp,t1_table)
+
+pays='cm'
+requete_pays = 'SELECT  %s,%s from %s where department = %s' % (\
+        t1_champIdentifiant,
+        t1_champMdp,t1_table,pays
+        )
+
+#requete pour toute la région
+requete_region = "SELECT %s,%s from %s where department='%s'" % (\
+        t1_champIdentifiant, t1_champMdp, t1_table,pays_region[0])
+for p in pays_region[1:] : #pour ne pas débuter au premier
+    requete_region += " OR department = '%s'" % p
+
+#execution de la requete
+try :
+    c.execute(requete_region)
+except ProgrammingError:
+    print 'erreur dans votre requête!'
+    print 'bye'
+    exit
+except OperationalError:
+    print 'erreur opérationnelle dans votre requête!'
+    print 'bye'
+    exit
+else:
+    print 'on peut continuer sereinement :) '
+
+# on récupère aussi les infos de l'autre côté dans la
+#table auth
+t2_champIdentifiant = 'user'
+t2_champMdp = 'password'
+t2_champActif = 'actif'
+t2_table = 'auth'
+
+t2_requete = "SELECT %s,%s from %s  where actif=1" %\
+        (t2_champIdentifiant, t2_champMdp, t2_table)
+
+
+try :
+    d.execute(t2_requete)
+except OperationalError:
+    print 'erreur opérationnelle dans votre requête!'
+    print 'bye'
+    exit
+else:
+    print 'Suite du traitement'
+
+print '-' * 80
+print '-' * 80
+### la phase des comparaisons
+
+#on va se servir des ensembles pour la comparaison
+r_sogo_set = set(c.fetchall())
+r_auth_set = set(d.fetchall())
+
+#on cherche là où il y a une différence à savoir :
+#présent dans SOGo.auf_users mais pas dans messagerie.auth
+diff_set_sogo = r_sogo_set.difference(r_auth_set)
+
+#req_update_auth = "UPDATE auth set password= '%s' where user= %s"
+
+nbr_maj = 0
+nbr_aj = 0
+compte_maj = []
+compte_aj = []
+
+if len(diff_set_sogo) > 0:
+
+    for usager in diff_set_sogo:
+        req_recherche = "SELECT %s from auth where user='%s'" % \
+                (t2_champIdentifiant,usager[0])
+        if  d.execute(req_recherche) == 0 : #utilisateur inexistant
+            req_insert_auth = \
+                    "INSERT INTO auth (user,password) VALUES \
+                    ('%s','%s') " % \
+                    (usager[0], usager[1])
+            try:
+                d.execute(req_insert_auth)
+            except OperationalError:
+                print 'Oups'
+                exit
+            else:
+                print 'Nouveau compte ajouté'
+                nbr_aj += 1
+                compte_aj.append(usager[0])
+        elif d.execute(req_recherche) > 0:
+            #normalement ici ça signifie que le compte est déjà présent
+
+            req_update_auth = \
+            "UPDATE auth set password = '%s' where user = '%s'" %\
+                    (usager[1], usager[0])
+            print req_update_auth
+            print 'Traitement'
+
+            try:
+                d.execute(req_update_auth)
+            except OperationalError:
+                print 'erreur !'
+                exit
+            else:
+                nbr_maj += 1
+                compte_maj.append(usager[0])
+                print 'Mot de passe pour %s  mis à jour' % usager[0]
+
+print '-' * 80
+if nbr_aj > 0 :
+    print '%s compte(s) ajouté(s)' % nbr_aj
+    print '--°--' * 20
+    for i in compte_aj:
+        print i
+        print '+-------+'
+    print '--°--' * 80
+
+if nbr_maj > 0 :
+    print '%s compte(s) mis à jour' % nbr_maj
+    print '--°--' * 20
+    for i in compte_maj:
+        print i
+        print '+-----+'
diff --git a/scripts/syncmdp.py b/scripts/syncmdp.py
deleted file mode 100644 (file)
index 5db1dc5..0000000
+++ /dev/null
@@ -1,166 +0,0 @@
-#/usr/bin/env python
-# -*- coding:utf-8 -*-
-
-"""
-L'objectif est de synchroniser
-les mots de passe des personnels
-d'une table vers une autre
-à intervalle régulier
-"""
-
-import MySQLdb
-
-from _mysql_exceptions import *
-from getpass import getpass
-
-passwd = getpass('Mot de passe bd: ')
-host = 'localhost'
-db = 'bacgl'
-user = 'willy'
-
-#TODO vraiment gérer les exceptions parce que pour le moment ... :P
-
-c_db = MySQLdb.connect(host,user,passwd,db)
-#initialisation pour le côté sogo
-c = c_db.cursor()
-
-#initialisation pour le côté local
-d = c_db.cursor()
-
-#Plusieurs cas de figure
-#on veut récupérer d'abord consulter les infos à l'origine
-
-pays_region = ['cm','ga','bi','cd','cg','cf','td']
-BACGL_pays = {'cm': 'Cameroun',
-        'ga': 'Gabon',
-        'bi': 'Bujumbura',
-        'cd': 'République démocratique du Congo',
-        'cg': 'Congo',
-        'cf': 'Centrafrique',
-        'td': 'Tchad',
-        }
-
-t1_champIdentifiant = 'c_uid'
-t1_champMdp = 'c_password'
-t1_table = 'auf_users'
-requete = 'SELECT  %s,%s from %s' % (t1_champIdentifiant,
-        t1_champMdp,t1_table)
-
-pays='cm'
-requete_pays = 'SELECT  %s,%s from %s where department = %s' % (\
-        t1_champIdentifiant,
-        t1_champMdp,t1_table,pays
-        )
-
-#requete pour toute la région
-requete_region = "SELECT %s,%s from %s where department='%s'" % (\
-        t1_champIdentifiant, t1_champMdp, t1_table,pays_region[0])
-for p in pays_region[1:] : #pour ne pas débuter au premier
-    requete_region += " OR department = '%s'" % p
-
-#execution de la requete
-try :
-    c.execute(requete_region)
-except ProgrammingError:
-    print 'erreur dans votre requête!'
-    print 'bye'
-    exit
-except OperationalError:
-    print 'erreur opérationnelle dans votre requête!'
-    print 'bye'
-    exit
-else:
-    print 'on peut continuer sereinement :) '
-
-# on récupère aussi les infos de l'autre côté dans la
-#table auth
-t2_champIdentifiant = 'user'
-t2_champMdp = 'password'
-t2_champActif = 'actif'
-t2_table = 'auth'
-
-t2_requete = "SELECT %s,%s from %s  where actif=1" %\
-        (t2_champIdentifiant, t2_champMdp, t2_table)
-
-
-try :
-    d.execute(t2_requete)
-except OperationalError:
-    print 'erreur opérationnelle dans votre requête!'
-    print 'bye'
-    exit
-else:
-    print 'Suite du traitement'
-
-print '-' * 80
-print '-' * 80
-### la phase des comparaisons
-
-#on va se servir des ensembles pour la comparaison
-r_sogo_set = set(c.fetchall())
-r_auth_set = set(d.fetchall())
-
-#on cherche là où il y a une différence à savoir :
-#présent dans SOGo.auf_users mais pas dans messagerie.auth
-diff_set_sogo = r_sogo_set.difference(r_auth_set)
-
-#req_update_auth = "UPDATE auth set password= '%s' where user= %s"
-
-nbr_maj = 0
-nbr_aj = 0
-compte_maj = []
-compte_aj = []
-
-if len(diff_set_sogo) > 0:
-
-    for usager in diff_set_sogo:
-        req_recherche = "SELECT %s from auth where user='%s'" % \
-                (t2_champIdentifiant,usager[0])
-        if  d.execute(req_recherche) == 0 : #utilisateur inexistant
-            req_insert_auth = \
-                    "INSERT INTO auth (user,password) VALUES \
-                    ('%s','%s') " % \
-                    (usager[0], usager[1])
-            try:
-                d.execute(req_insert_auth)
-            except OperationalError:
-                print 'Oups'
-                exit
-            else:
-                print 'Nouveau compte ajouté'
-                nbr_aj += 1
-                compte_aj.append(usager[0])
-        elif d.execute(req_recherche) > 0:
-            #normalement ici ça signifie que le compte est déjà présent
-
-            req_update_auth = \
-            "UPDATE auth set password = '%s' where user = '%s'" %\
-                    (usager[1], usager[0])
-            print req_update_auth
-            print 'Traitement'
-
-            try:
-                d.execute(req_update_auth)
-            except OperationalError:
-                print 'erreur !'
-                exit
-            else:
-                nbr_maj += 1
-                compte_maj.append(usager[0])
-                print 'Mot de passe pour %s  mis à jour' % usager[0]
-
-print '-' * 80
-if nbr_aj > 0 :
-    print '%s compte(s) ajouté(s)' % nbr_aj
-    print '--°--' * 20
-    for i in compte_aj:
-        print i
-        print '+-------+'
-    print '--°--' * 80
-
-if nbr_maj > 0 :
-    print '%s compte(s) mis à jour' % nbr_maj
-    print '--°--' * 20
-    for i in compte_maj:
-        print i
-        print '+-----+'