migration code boitevocales
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Tue, 29 Mar 2011 14:47:45 +0000 (10:47 -0400)
committerOlivier Larchevêque <olivier.larcheveque@auf.org>
Tue, 29 Mar 2011 14:47:45 +0000 (10:47 -0400)
arc4.py [new file with mode: 0644]
buildout.cfg
project/gcast/migrations/0006_codes_boites_vocales.py [new file with mode: 0644]
project/gcast/migrations/0006_codes_boites_vocales.txt.arc4 [new file with mode: 0644]

diff --git a/arc4.py b/arc4.py
new file mode 100644 (file)
index 0000000..b556f8e
--- /dev/null
+++ b/arc4.py
@@ -0,0 +1,58 @@
+# -*- encoding: utf-8 -*-
+
+"""
+Script qui permet de crypter et décrypter des fichiers.
+"""
+
+import sys
+import getopt
+from Crypto.Cipher import ARC4 as Cipher
+
+EXT = ".arc4"
+
+def crypter(path, key):
+    f = open(path)
+    data = f.read()
+    f.close()
+
+    cipher = Cipher.new(key)
+    return cipher.encrypt(data)
+
+def decrypter(path, key):
+    f = open(path)
+    data = f.read()
+    f.close()
+
+    cipher = Cipher.new(key)
+    return cipher.decrypt(data)
+
+if __name__ == "__main__":
+    try:
+        opts, args = getopt.getopt(sys.argv[1:], "", [])
+        action, fichier = args
+
+        if action in ("D","d", ):
+            key = raw_input("Mot de passe pour décrypter les migrations :  ")
+            data = decrypter(fichier, key)
+            out = fichier.replace(EXT, "")
+            if fichier == out:
+                print "source == destinatiation!"
+                sys.exit(-2)
+            f = open(out, "w")
+            f.write(data)
+            f.close()
+
+        elif action in ("C", "c", ):
+            key = raw_input("Mot de passe pour crypter les migrations :  ")
+            data = crypter(fichier, key)
+            out = "%s%s" % (fichier, EXT)
+            if fichier == out:
+                print "source == destinatiation!"
+                sys.exit(-2)
+            f = open(out, "w")
+            f.write(data)
+            f.close()
+
+    except getopt.error, msg:
+        pass
+
index 9b77a9f..e5cccdf 100644 (file)
@@ -12,7 +12,8 @@ eggs =
     south
     django-admin-tools
     auf.django.skin
-
+    pycrypto
+   
 [versions]
 django = 1.2.3
 south = 0.7
diff --git a/project/gcast/migrations/0006_codes_boites_vocales.py b/project/gcast/migrations/0006_codes_boites_vocales.py
new file mode 100644 (file)
index 0000000..835b191
--- /dev/null
@@ -0,0 +1,49 @@
+# encoding: utf-8
+import os
+import datetime
+from south.db import db
+from south.v2 import DataMigration
+from django.db import models
+import arc4
+
+
+class Migration(DataMigration):
+    
+    def forwards(self, orm):
+        "Write your forwards methods here."
+        path = os.path.join(os.path.dirname(__file__), "0006_codes_boites_vocales.txt.arc4")
+        key = raw_input("Mot de passe pour décrypter les migrations :  ")
+        data = arc4.decrypter(path, key)
+        for i, row in enumerate(data.split("\n")):
+            data = row.split(",")
+            if len(data) != 4:
+                print "ligne invalide %s : %s" % (i, " ".join(data))
+                print data
+            else:
+               nb_boite, code, entite, email = data
+               cpt = orm.Compte.objects.get(exten=nb_boite)
+               cpt.voicemailcode = code
+               cpt.save()
+    
+    
+    def backwards(self, orm):
+        "Write your backwards methods here."
+    
+    models = {
+        'gcast.compte': {
+            'Meta': {'object_name': 'Compte'},
+            'bureau': ('django.db.models.fields.CharField', [], {'max_length': '8'}),
+            'categorie': ('django.db.models.fields.CharField', [], {'default': "'users-locaux'", 'max_length': '64'}),
+            'cidname': ('django.db.models.fields.CharField', [], {'max_length': '256'}),
+            'email': ('django.db.models.fields.CharField', [], {'max_length': '256'}),
+            'exten': ('django.db.models.fields.CharField', [], {'max_length': '8', 'unique': 'True'}),
+            'fullname': ('django.db.models.fields.CharField', [], {'max_length': '256'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'nat': ('django.db.models.fields.CharField', [], {'default': "'no'", 'max_length': '8'}),
+            'pavillon': ('django.db.models.fields.CharField', [], {'default': '543', 'max_length': '4'}),
+            'secret': ('django.db.models.fields.CharField', [], {'max_length': '8'}),
+            'voicemailcode': ('django.db.models.fields.CharField', [], {'max_length': '8'})
+        }
+    }
+    
+    complete_apps = ['gcast']
diff --git a/project/gcast/migrations/0006_codes_boites_vocales.txt.arc4 b/project/gcast/migrations/0006_codes_boites_vocales.txt.arc4
new file mode 100644 (file)
index 0000000..9cd7adb
Binary files /dev/null and b/project/gcast/migrations/0006_codes_boites_vocales.txt.arc4 differ