Première version : mise en route du suivi.
authorMoussa Nombré <mnombre@rtr-ameriques1.(none)>
Fri, 16 Jul 2010 20:46:52 +0000 (16:46 -0400)
committerMoussa Nombré <mnombre@rtr-ameriques1.(none)>
Fri, 16 Jul 2010 20:46:52 +0000 (16:46 -0400)
12 files changed:
.gitignore [new file with mode: 0644]
__init__.py [new file with mode: 0644]
auf_asterisk_users/__init__.py [new file with mode: 0644]
auf_asterisk_users/admin.py [new file with mode: 0644]
auf_asterisk_users/models.py [new file with mode: 0644]
auf_asterisk_users/views.py [new file with mode: 0644]
comptes.txt [new file with mode: 0644]
manage.py [new file with mode: 0755]
settings.py.edit [new file with mode: 0644]
toip-import-comptes.py [new file with mode: 0644]
toip-import-comptes.py~ [new file with mode: 0644]
urls.py [new file with mode: 0644]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..a9b3bc7
--- /dev/null
@@ -0,0 +1,3 @@
+*.pyc
+*.pyo
+settings.py
diff --git a/__init__.py b/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/auf_asterisk_users/__init__.py b/auf_asterisk_users/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/auf_asterisk_users/admin.py b/auf_asterisk_users/admin.py
new file mode 100644 (file)
index 0000000..d7e7e29
--- /dev/null
@@ -0,0 +1,8 @@
+from auf_asterisk_comptes.auf_asterisk_users.models import Comptes
+from django.contrib import admin
+
+class ComptesAdmin(admin.ModelAdmin):
+    fields = ['exten', 'categorie', 'fullname', 'cidname', 'email', 'secret', 'voicemailcode', 'pavillon', 'bureau']
+    list_display = ('exten', 'fullname', 'categorie', 'bureau')
+
+admin.site.register(Comptes, ComptesAdmin)
diff --git a/auf_asterisk_users/models.py b/auf_asterisk_users/models.py
new file mode 100644 (file)
index 0000000..00781e0
--- /dev/null
@@ -0,0 +1,23 @@
+from django.db import models
+
+# Create your models here.
+
+class Comptes(models.Model):
+       exten = models.CharField(max_length=8)
+       categorie = models.CharField(max_length=64)
+       fullname = models.CharField(max_length=256)
+       cidname = models.CharField(max_length=256)
+       email = models.CharField(max_length=256)
+       secret = models.CharField(max_length=8)
+       voicemailcode = models.CharField(max_length=8)
+       pavillon = models.CharField(max_length=4, default=543) 
+       bureau = models.CharField(max_length=8)
+
+#      def __unicode__(self):
+#              return self.fullname()
+
+       def gestion_comptes(self):
+               return self.exten()
+               return self.categorie()
+               return self.fullname()
+
diff --git a/auf_asterisk_users/views.py b/auf_asterisk_users/views.py
new file mode 100644 (file)
index 0000000..51056fe
--- /dev/null
@@ -0,0 +1,20 @@
+#from auf_asterisk_comptes.auf_asterisk_users.models import Comptes
+#from django.http import HttpResponse
+#from django.contrib import admin
+
+#class ComptesAdmin(admin.ModelAdmin):
+#    fields = ['exten', 'categorie', 'fullname', 'cidname', 'email', 'secret', 'voicemailcode', 'pavillon', 'bureau']
+#    list_display = ('exten', 'fullname', 'categorie', 'bureau')
+#
+#    admin.site.register(Comptes, ComptesAdmin)
+#
+#
+#def index(request):
+#    return HttpResponse("Hello, world. TOIP.")
+#
+#def gestcomptes(request):
+#    lescomptes = Comptes.objects.all().order_by('exten')
+#    #fields = ['exten', 'categorie', 'fullname', 'cidname', 'email', 'secret', 'voicemailcode', 'pavillon', 'bureau']
+#    #list_display = ('exten', 'categorie', 'fullname', 'bureau')
+#    list_display = ', '.join([p.exten for p in lescomptes])
+##    return HttpResponse(list_display)
diff --git a/comptes.txt b/comptes.txt
new file mode 100644 (file)
index 0000000..2aadf8b
--- /dev/null
@@ -0,0 +1,56 @@
+1111:users-ameriquenord:Abdelellah ABOUIZA:Abdelellah ABOUIZA:abdelellah.abouiza@auf.org:abdelellah:8547:543:112
+1122:users-ameriquenord:Darko TEST:Darko TEST:darko.stanar@auf.org:2211:1122:543:112
+1133:users-ameriquenord:Moussa TEST:Moussa TEST:darko.stanar@auf.org:3311:1133:543:112
+1227:users-outremer:Patrick CHARDENET:Patrick CHARDENET:patrick.chardenet@auf.org:7221:4213:543:291
+1353:users-ameriquenord:Bureau vide:Bureau vide:jeannette.bingapiti@auf.org:3531:1353:543:305
+1367:users-outremer:Jeannette BINGAPITI:Jeannette BINGAPITI:jeannette.bingapiti@auf.org:7631:2543:543:314
+1377:users-ameriquenord:Moussa NOMBRE:Moussa NOMBRE:moussa.nombre@auf.org:7731:1973:543:111
+1379:users-outremer:SALLE DE VISIO 1er au 3034:S. VISIO 3034-1:sophie.derome@auf.org:9731:1379:543:183
+1380:users-outremer:Ginette LANGLOIS:Ginette LANGLOIS:ginette.langlois@auf.org:0831:5684:543:311
+1381:users-outremer:Jocelyne DUGUAY:Jocelyne DUGUAY:jocelyne.duguay@auf.org:1831:3312:543:195
+1382:users-ameriquenord:Adolfo DE PAZ VELA:Adolfo DE PAZ:adolfo.de-paz-vela@auf.org:2831:9568:543:211
+1383:users-outremer:André LEGER:André LEGER:andre.leger@auf.org:3831:9640:543:315
+1384:users-outremer:Nathalie HOULE:Nathalie HOULE:nathalie.houle@auf.org:4831:6538:543:310
+1385:users-ameriquenord:Houda BACHISSE:Houda BACHISSE:houda.bachisse@auf.org:5831:5648:543:212
+1386:users-outremer:Jean Pierre LANGLAIS:JP LANGLAIS:jean-pierre.langlais@auf.org:6831:3250:543:202
+1387:users-outremer:Annie DALLAIRE:Annie DALLAIRE:annie.dallaire@auf.org:7831:3954:543:307
+1388:users-ameriquenord:Assalih JAGHFAR:Assalih JAGHFAR:assalih.jaghfar@auf.org:8831:4567:543:214
+1389:users-ameriquenord:Bureau vide:Bureau vide:jeannette.bingapiti@auf.org:9831:1398:543:302
+1390:users-ameriquenord:Maryse PELLAND:Maryse PELLAND:maryse.pelland@auf.org:0931:2321:543:205
+1391:users-outremer:Rola SAAD:Rola SAAD:rola.saad@auf.org:1931:6584:543:312
+1392:users-ameriquenord:Younes TAZI:Younes TAZI:younes.tazi@auf.org:2931:5187:543:210
+1393:users-outremer:Mireille MATHIEU:Mireille MATHIEU:mireille.mathieu@auf.org:3931:4654:543:215
+1394:users-outremer:Pierre NOREAU:Pierre NOREAU:pierre.noreau@auf.org:4931:2654:543:180
+1395:users-ameriquenord:Darko STANAR:Darko STANAR:darko.stanar@auf.org:5931:1395:543:112
+1396:users-ameriquenord:Lebdai Nazim:Lebdai Nazim:nazim.lebdai@auf.org:6931:4196:543:187
+1398:users-outremer:SALLE DE RÉUNION 1er du 3032:S. RÉUNION 3032-1:christine.legris@auf.org:8931:1398:543:115
+5720:users-outremer:Wanda DIEBOLT:Wanda DIEBOLT:wanda.diebold@auf.org:0275:3254:543:283
+1431:users-ameriquenord:Cyril ROBERT:Cyril ROBERT:cyril.robert@auf.org:1341:1278:543:110
+1458:users-outremer:SALLE DE CONFÉRENCE 1er du 3034:S. CONF 3034-1:sophie.derome@auf.org:8541:1458:543:186
+1469:users-ameriquenord:Francine BROCHU:Francine BROCHU:francine.brochu@auf.org:9641:5252:543:290
+1474:users-outremer:Anick BERNARD:Anick BERNARD:anick.bernard@auf.org:4741:8545:543:203
+1541:users-outremer:Annick CROTEAU:Annick CROTEAU:annick.croteau@auf.org:1451:5343:543:303
+1622:users-outremer:Julien GUYOT:Julien GUYOT:julien.guyot@auf.org:2261:1458:543:295
+1624:users-ameriquenord:Odette TREMBLAY:Odette TREMBLAY:odette.tremblay@auf.org:4261:1354:543:201
+1751:users-outremer:Christine LEGRIS:Christine LEGRIS:christine.legris@auf.org:1571:2158:543:103
+1837:users-outremer:Nora STAMBOULIEH:Nora STAMBOULIEH:nora.stamboulieh@auf.org:7381:6531:543:191
+1926:users-outremer:Sophie DEROME:Sophie DEROME:sophie.derome@auf.org:6291:3547:543:182
+1937:users-outremer:Virginie MESGUICH:Virginie MESGUICH:virginie.mesguich@auf.org:7391:8796:543:190
+3153:users-ameriquenord:ARCHIVES garage:ARCHIVES garage:anabel.gareau@auf.org:3513:3153:543:87
+3384:users-ameriquenord:Davin BARAGIOTTA:Davin BARAGIOTTA:davin.baragiotta@auf.org:4833:9321:543:106
+3587:users-ameriquenord:Bureau vide Rola:Bureau vide Rola:rola.saad@auf.org:7853:3587:543:312
+3661:users-outremer:Carol GEHIN:Carol GEHIN:carol.gehin@auf.org:1663:5642:543:306
+3728:users-outremer:Victor BRUNEAU:Victor BRUNEAU:christine.legris@auf.org:8273:3728:543:102
+3733:users-ameriquenord:Ali JETHA:Ali JETHA:ali.jetha@auf.org:3373:5461:543:107
+3738:users-ameriquenord:Emmanuel TAGNE TAGNE:Emmanuel TAGNE:emmanuel.tagne-tagne@auf.org:8373:4536:543:105
+3823:users-ameriquenord:SUPPORT TECHNIQUE ARI:SUPPORT TECH ARI:emmanuel.tagne-tagne@auf.org:3283:4536:543:112
+5094:users-ameriquenord:Mi Hye SHIN:Mi Hye SHIN:mihye.shin@auf.org:4905:6530:543:301
+5095:users-outremer:SALLE DE VISIO SENGHOR:S. VISIO SENGHOR:anabel.gareau@auf.org:5905:5095:543:380
+5096:users-ameriquenord:BIBLIOTHÈQUE DES ARCHIVES:BIBLIO ARCHIVES:anabel.gareau@auf.org:6905:5096:543:374
+5098:users-ameriquenord:Karine GUENETTE:Karine GUÉNETTE:karine.guenette@auf.org:8905:8754:543:294
+1399:users-outremer:Bernard CERQUIGLINI:Bernard CERQUIGLINI:bernard.cerquiglini@auf.org:9931:2541:543:280
+6630:users-outremer:SCM Réception:SCM Réception:anabel.gareau@auf.org:0366:3267:543:3034
+7232:users-outremer:Anabel GAREAU:Anabel GAREAU:anabel.gareau@auf.org:2327:3267:543:3034
+7241:users-outremer:BUREAU DES AMÉRIQUES:BUREAU AMÉRIQUES:sophie.derome@auf.org:1427:3547:543:182
+7747:users-outremer:Monique CHERY:Monique CHERY:monique.chery@auf.org:7477:5681:543:287
+
diff --git a/manage.py b/manage.py
new file mode 100755 (executable)
index 0000000..bcdd55e
--- /dev/null
+++ b/manage.py
@@ -0,0 +1,11 @@
+#!/usr/bin/python
+from django.core.management import execute_manager
+try:
+    import settings # Assumed to be in the same directory.
+except ImportError:
+    import sys
+    sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n(If the file settings.py does indeed exist, it's causing an ImportError somehow.)\n" % __file__)
+    sys.exit(1)
+
+if __name__ == "__main__":
+    execute_manager(settings)
diff --git a/settings.py.edit b/settings.py.edit
new file mode 100644 (file)
index 0000000..5746ff8
--- /dev/null
@@ -0,0 +1,81 @@
+# Django settings for auf_asterisk_comptes project.
+
+DEBUG = True
+TEMPLATE_DEBUG = DEBUG
+
+ADMINS = (
+    # ('Your Name', 'your_email@domain.com'),
+)
+
+MANAGERS = ADMINS
+
+DATABASE_ENGINE = 'mysql'           # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
+DATABASE_NAME = 'asterisk-users'             # Or path to database file if using sqlite3.
+DATABASE_USER = '*******'             # Not used with sqlite3.
+DATABASE_PASSWORD = '************'         # Not used with sqlite3.
+DATABASE_HOST = '***********'             # Set to empty string for localhost. Not used with sqlite3.
+DATABASE_PORT = ''             # Set to empty string for default. Not used with sqlite3.
+
+# Local time zone for this installation. Choices can be found here:
+# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
+# although not all choices may be available on all operating systems.
+# If running in a Windows environment this must be set to the same as your
+# system time zone.
+TIME_ZONE = 'America/Montreal'
+
+# Language code for this installation. All choices can be found here:
+# http://www.i18nguy.com/unicode/language-identifiers.html
+LANGUAGE_CODE = 'fr-fr'
+
+SITE_ID = 1
+
+# If you set this to False, Django will make some optimizations so as not
+# to load the internationalization machinery.
+USE_I18N = True
+
+# Absolute path to the directory that holds media.
+# Example: "/home/media/media.lawrence.com/"
+MEDIA_ROOT = '/srv/www/gcast.ca.auf/media'
+
+# URL that handles the media served from MEDIA_ROOT. Make sure to use a
+# trailing slash if there is a path component (optional in other cases).
+# Examples: "http://media.lawrence.com", "http://example.com/media/"
+MEDIA_URL = 'http://gcast.ca.auf/auf_asterisk_users/media'
+
+# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a
+# trailing slash.
+# Examples: "http://foo.com/media/", "/media/".
+ADMIN_MEDIA_PREFIX = '/admin_media/'
+
+# Make this unique, and don't share it with anybody.
+SECRET_KEY = 'kdn(sj2=%)4x&34)$ob9%wn)nwm!*m!$blkoztepky42=8$j^9'
+
+# List of callables that know how to import templates from various sources.
+TEMPLATE_LOADERS = (
+    'django.template.loaders.filesystem.load_template_source',
+    'django.template.loaders.app_directories.load_template_source',
+#     'django.template.loaders.eggs.load_template_source',
+)
+
+MIDDLEWARE_CLASSES = (
+    'django.middleware.common.CommonMiddleware',
+    'django.contrib.sessions.middleware.SessionMiddleware',
+    'django.contrib.auth.middleware.AuthenticationMiddleware',
+)
+
+ROOT_URLCONF = 'auf_asterisk_comptes.urls'
+
+TEMPLATE_DIRS = (
+    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
+    # Always use forward slashes, even on Windows.
+    # Don't forget to use absolute paths, not relative paths.
+)
+
+INSTALLED_APPS = (
+    'django.contrib.auth',
+    'django.contrib.contenttypes',
+    'django.contrib.sessions',
+    'django.contrib.sites',
+    'auf_asterisk_comptes.auf_asterisk_users',
+    'django.contrib.admin'
+)
diff --git a/toip-import-comptes.py b/toip-import-comptes.py
new file mode 100644 (file)
index 0000000..999bcd0
--- /dev/null
@@ -0,0 +1,58 @@
+import sys
+import csv
+
+import warnings
+def customwarn(message, category, filename, lineno):
+   pass
+warnings.showwarning = customwarn 
+
+from sqlalchemy.ext.sqlsoup import SqlSoup
+
+if __name__ == "__main__":
+    
+    uri_db = "mysql://asterisk-users:MYast-stat5!@new-dev.auf/asterisk-users"
+    if  len(sys.argv) is not 2:
+        print "Usage: ./%s <filename>\n" % sys.argv[0]
+        print "Where filename is the path to the Asterisk comptes file to import (comptes.txt)\n"
+        sys.exit()
+    else:
+        csv_file = sys.argv[1]
+    try:
+        rows = csv.reader(open(csv_file), delimiter=':', quotechar='"')
+    except:
+        print "File doesn't exist"
+        sys.exit()
+    
+    db = SqlSoup(uri_db)
+    
+    inserted_rows = 0
+    
+    for row in rows:
+        if len(row) > 0:
+            exten, categorie, fullname, cidname, email, secret, voicemailcode, pavillon, bureau = tuple(row)
+           print row
+            
+            rp = db.bind.execute("SELECT exten, fullname FROM auf_asterisk_users_comptes \
+                                  WHERE exten='%s' AND fullname='%s' \
+                                 LIMIT 1" % (exten, fullname))
+            
+            if len(rp.fetchall()) == 0:     
+                db.auf_asterisk_users_comptes.insert(
+                   exten=exten,
+                   categorie=categorie,
+                   fullname=fullname,
+                   cidname=cidname,
+                   email=email,
+                   secret=secret,
+                   voicemailcode=voicemailcode,
+                   pavillon=pavillon,
+                   bureau=bureau
+                )
+                print "Inserted: %s %s\n" % (exten, fullname)
+                inserted_rows = inserted_rows + 1
+            else:
+                print("Not unique: %s %s\n" % (exten, fullname))
+    db.flush()
+    print("%d imported\n" % inserted_rows);
diff --git a/toip-import-comptes.py~ b/toip-import-comptes.py~
new file mode 100644 (file)
index 0000000..ca9621e
--- /dev/null
@@ -0,0 +1,58 @@
+import sys
+import csv
+
+import warnings
+def customwarn(message, category, filename, lineno):
+   pass
+warnings.showwarning = customwarn 
+
+from sqlalchemy.ext.sqlsoup import SqlSoup
+
+if __name__ == "__main__":
+    
+    uri_db = "mysql://asterisk-users:MYast-stat5!@new-dev.auf/asterisk-users"
+    if  len(sys.argv) is not 2:
+        print "Usage: ./%s <filename>\n" % sys.argv[0]
+        print "Where filename is the path to the Asterisk comptes file to import (comptes.txt)\n"
+        sys.exit()
+    else:
+        csv_file = sys.argv[1]
+    try:
+        rows = csv.reader(open(csv_file), delimiter=':', quotechar='"')
+    except:
+        print "File doesn't exist"
+        sys.exit()
+    
+    db = SqlSoup(uri_db)
+    
+    inserted_rows = 0
+    
+    for row in rows:
+        if len(row) > 0:
+            exten, categorie, fullname, cidname, email, secret, voicemailcode, pavillon, bureau = tuple(row)
+           print row
+            
+            rp = db.bind.execute("SELECT exten, fullname FROM auf_asterisk_users_comptes \
+                                  WHERE exten='%s' AND fullname='%s' \
+                                 LIMIT 1" % (exten, fullname))
+            
+            if len(rp.fetchall()) == 0:     
+                db.cdr.insert(
+                   exten=exten,
+                   categorie=categorie,
+                   fullname=fullname,
+                   cidname=cidname,
+                   email=email,
+                   secret=secret,
+                   voicemailcode=voicemailcode,
+                   pavillon=pavillon,
+                   bureau=bureau
+                )
+                print "Inserted: %s %s\n" % (exten, fullname)
+                inserted_rows = inserted_rows + 1
+            else:
+                print("Not unique: %s %s\n" % (exten, fullname))
+    db.flush()
+    print("%d imported\n" % inserted_rows);
diff --git a/urls.py b/urls.py
new file mode 100644 (file)
index 0000000..441ab63
--- /dev/null
+++ b/urls.py
@@ -0,0 +1,19 @@
+from django.conf.urls.defaults import *
+
+# Uncomment the next two lines to enable the admin:
+from django.contrib import admin
+admin.autodiscover()
+
+urlpatterns = patterns('',
+    # Example:
+    # (r'^auf_asterisk_comptes/', include('auf_asterisk_comptes.foo.urls')),
+    #(r'^$', 'auf_asterisk_comptes.auf_asterisk_users.views.index'),
+    (r'^$', 'auf_asterisk_comptes.auf_asterisk_users.views.gestcomptes'),
+
+    # Uncomment the admin/doc line below and add 'django.contrib.admindocs' 
+    # to INSTALLED_APPS to enable admin documentation:
+    # (r'^admin/doc/', include('django.contrib.admindocs.urls')),
+
+    # Uncomment the next line to enable the admin:
+    (r'^admin/(.*)', admin.site.root),
+)