]> git.parisson.com Git - telecaster-client.git/commitdiff
* Rename courses to conferences
authoryomguy <>
Sun, 8 Jun 2008 20:53:15 +0000 (20:53 +0000)
committeryomguy <>
Sun, 8 Jun 2008 20:53:15 +0000 (20:53 +0000)
README
etc/default_conferences.xml [new file with mode: 0644]
etc/default_courses.xml
etc/pre-barreau_conferences.xml [new file with mode: 0644]
etc/pre-barreau_courses.xml
etc/teleoddcast.cfg
teleoddcast.py
tools.py

diff --git a/README b/README
index 64b07365cb67aa13ec17e8978e8a983f5b142d5f..5aee168b5c68b0f1f9ae902476449d94e94e82d3 100644 (file)
--- a/README
+++ b/README
@@ -2,4 +2,5 @@ teleoddcast
 by yomguy
 
 # DEPENDS
-icecast2, jackd, oddcastv3-jack, streamrippper, pgrep
+icecast2, jackd, oddcastv3-jack, streamrippper, pgrep, vorbis-tools, lame
+
diff --git a/etc/default_conferences.xml b/etc/default_conferences.xml
new file mode 100644 (file)
index 0000000..c450d20
--- /dev/null
@@ -0,0 +1,49 @@
+<teleoddcast>
+    <url>http://localhost</url>
+    <title>School Example</title>
+    <port>8000</port>
+    <department>
+        <name>Audio</name>
+        <conferences>
+            <conference>
+                <name>Conference 1</name>
+            </conference>
+            <conference>
+                <name>Conference 2</name>
+            </conference>
+        </conferences>
+    </department>
+    <department>
+        <name>Computer</name>
+        <conferences>
+            <conference>
+                <name>Conference 1</name>
+            </conference>
+            <conference>
+                <name>Conference 2</name>
+            </conference>
+        </conferences>
+    </department>
+    <department>
+        <name>Physics</name>
+        <conferences>
+            <conference>
+                <name>Conference 1</name>
+            </conference>
+            <conference>
+                <name>Conference 2</name>
+            </conference>
+        </conferences>
+    </department>
+    <department>
+        <name>Sociology</name>
+        <conferences>
+            <conference>
+                <name>Conference 1</name>
+            </conference>
+            <conference>
+                <name>Conference 1</name>
+            </conference>
+        </conferences>
+    </department>
+</teleoddcast>
index 22a72ab9d006fc0e921112bce4b9e4a756e93f02..c450d20cdba7cff28f23eea9d9734c3984151532 100644 (file)
@@ -4,46 +4,46 @@
     <port>8000</port>
     <department>
         <name>Audio</name>
-        <courses>
-            <course>
-                <name>Course 1</name>
-            </course>
-            <course>
-                <name>Course 2</name>
-            </course>
-        </courses>
+        <conferences>
+            <conference>
+                <name>Conference 1</name>
+            </conference>
+            <conference>
+                <name>Conference 2</name>
+            </conference>
+        </conferences>
     </department>
     <department>
         <name>Computer</name>
-        <courses>
-            <course>
-                <name>Course 1</name>
-            </course>
-            <course>
-                <name>Course 2</name>
-            </course>
-        </courses>
+        <conferences>
+            <conference>
+                <name>Conference 1</name>
+            </conference>
+            <conference>
+                <name>Conference 2</name>
+            </conference>
+        </conferences>
     </department>
     <department>
         <name>Physics</name>
-        <courses>
-            <course>
-                <name>Course 1</name>
-            </course>
-            <course>
-                <name>Course 2</name>
-            </course>
-        </courses>
+        <conferences>
+            <conference>
+                <name>Conference 1</name>
+            </conference>
+            <conference>
+                <name>Conference 2</name>
+            </conference>
+        </conferences>
     </department>
     <department>
         <name>Sociology</name>
-        <courses>
-            <course>
-                <name>Course 1</name>
-            </course>
-            <course>
-                <name>Course 1</name>
-            </course>
-        </courses>
+        <conferences>
+            <conference>
+                <name>Conference 1</name>
+            </conference>
+            <conference>
+                <name>Conference 1</name>
+            </conference>
+        </conferences>
     </department>
 </teleoddcast>
diff --git a/etc/pre-barreau_conferences.xml b/etc/pre-barreau_conferences.xml
new file mode 100644 (file)
index 0000000..f0b17ac
--- /dev/null
@@ -0,0 +1,205 @@
+<teleoddcast>
+    <url>http://augustins.pre-barreau.com</url>
+    <title>Augustins - Pré-Barreau</title>
+    <port>8000</port>
+    
+    <department>
+        <name>CRFPA</name>
+        <conferences>
+            <conference>
+                <name>Liberté publiques - Cours</name>
+            </conference>
+            <conference>
+                <name>Note de synthèse - Corrections</name>
+            </conference>
+            <conference>
+                <name>Droit civil - Cours</name>
+            </conference>
+            <conference>
+                <name>Droit civil - Corrections</name>
+            </conference>
+            <conference>
+                <name>Procédure administrative et contentieuse - Cours</name>
+            </conference>
+            <conference>
+                <name>Procédure administrative et contentieuse - Corrections</name>
+            </conference>
+            <conference>
+                <name>Procédure civile - Cours</name>
+            </conference>
+            <conference>
+                <name>Procédure civile - Corrections</name>
+            </conference>
+            <conference>
+                <name>Procédure pénale - Cours</name>
+            </conference>
+            <conference>
+                <name>Procédure pénale - Corrections</name>
+            </conference>
+            <conference>
+                <name>Droit commercial des affaires - Cours</name>
+            </conference>
+            <conference>
+                <name>Droit commercial des affaires - Corrections</name>
+            </conference>
+            <conference>
+                <name>Droit communautaire et européen - Cours</name>
+            </conference>
+            <conference>
+                <name>Droit communautaire et européen - Corrections</name>
+            </conference>
+            <conference>
+                <name>Droit fiscal - Cours</name>
+            </conference>
+            <conference>
+                <name>Droit fiscal - Corrections</name>
+            </conference>
+            <conference>
+                <name>Droit pénal - Cours</name>
+            </conference>
+            <conference>
+                <name>Droit pénal - Corrections</name>
+            </conference>
+            <conference>
+                <name>Droit de la famille et des personnes - Cours</name>
+            </conference>
+            <conference>
+                <name>Droit de la famille et des personnes - Corrections</name>
+            </conference>
+            <conference>
+                <name>Droit patrimonial - Cours</name>
+            </conference>
+            <conference>
+                <name>Droit patrimonial - Corrections</name>
+            </conference>
+            <conference>
+                <name>Droit du travail - Cours</name>
+            </conference>
+            <conference>
+                <name>Droit du travail - Corrections</name>
+            </conference>
+            <conference>
+                <name>Droit administratif - Cours</name>
+            </conference>
+            <conference>
+                <name>Droit administratif - Corrections</name>
+            </conference>
+            <conference>
+                <name>Droit public des activités économiques - Cours</name>
+            </conference>
+            <conference>
+                <name>Droit public des activités économiques - Corrections</name>
+            </conference>
+            <conference>
+                <name>Droit international privé - Cours</name>
+            </conference>
+            <conference>
+                <name>Droit international privé - Corrections</name>
+            </conference>
+            <conference>
+                <name>Procédures collectives et sûretés - Cours</name>
+            </conference>
+            <conference>
+                <name>Procédures collectives et sûretés - Corrections</name>
+            </conference>
+            <conference>
+                <name>Procédure communautaire - Cours</name>
+            </conference>
+            <conference>
+                <name>Procédures civile d'exécution - Cours</name>
+            </conference>
+            <conference>
+                <name>Comptabilité privée - Cours</name>
+            </conference>
+            <conference>
+                <name>Finances publiques - Cours</name>
+            </conference>
+            <conference>
+                <name>REUNION</name>
+            </conference>
+            <conference>
+                <name>TEST</name>
+            </conference>
+        </conferences>
+    </department>
+
+    <department>
+        <name>AE</name>
+        <conferences>
+            <conference>
+                <name>Administratif_Cours</name>
+            </conference>
+            <conference>
+                <name>Adm_Correction</name>
+            </conference>
+            <conference>
+                <name>Civil_Correction</name>
+            </conference>
+            <conference>
+                <name>Commercial_Correctio</name>
+            </conference>
+            <conference>
+                <name>Commercial_Cours</name>
+            </conference>
+            <conference>
+                <name>Deontologie_Cours</name>
+            </conference>
+            <conference>
+                <name>Droit civil - Cours</name>
+            </conference>
+            <conference>
+                <name>Methodo_Oraux</name>
+            </conference>
+            <conference>
+                <name>Penal_Correction</name>
+            </conference>
+            <conference>
+                <name>Penal_Cours</name>
+            </conference>
+            <conference>
+                <name>Procedures_Cours</name>
+            </conference>
+            <conference>
+                <name>Reunion_info</name>
+            </conference>
+            <conference>
+                <name>Social_Corrections</name>
+            </conference>
+            <conference>
+                <name>Social_Cours</name>
+            </conference>
+            <conference>
+                <name>REUNION</name>
+            </conference>
+            <conference>
+                <name>TEST</name>
+            </conference>
+        </conferences>
+    </department>
+
+    <department>
+        <name>ENM</name>
+        <conferences>
+            <conference>
+                <name>TEST</name>
+            </conference>
+            <conference>
+                <name>REUNION</name>
+            </conference>
+        </conferences>
+    </department>
+                
+
+    <department>
+        <name>FJP</name>
+        <conferences>
+            <conference>
+                <name>TEST</name>
+            </conference>
+            <conference>
+                <name>REUNION</name>
+            </conference>
+        </conferences>
+    </department>
+
+</teleoddcast>
index 98326e44be19127731f809549dd40f5700a757d5..f0b17acd5a7ab3374ba03969a2ed9b2f09734b06 100644 (file)
     
     <department>
         <name>CRFPA</name>
-        <courses>
-            <course>
+        <conferences>
+            <conference>
                 <name>Liberté publiques - Cours</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Note de synthèse - Corrections</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Droit civil - Cours</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Droit civil - Corrections</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Procédure administrative et contentieuse - Cours</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Procédure administrative et contentieuse - Corrections</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Procédure civile - Cours</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Procédure civile - Corrections</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Procédure pénale - Cours</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Procédure pénale - Corrections</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Droit commercial des affaires - Cours</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Droit commercial des affaires - Corrections</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Droit communautaire et européen - Cours</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Droit communautaire et européen - Corrections</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Droit fiscal - Cours</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Droit fiscal - Corrections</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Droit pénal - Cours</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Droit pénal - Corrections</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Droit de la famille et des personnes - Cours</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Droit de la famille et des personnes - Corrections</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Droit patrimonial - Cours</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Droit patrimonial - Corrections</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Droit du travail - Cours</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Droit du travail - Corrections</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Droit administratif - Cours</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Droit administratif - Corrections</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Droit public des activités économiques - Cours</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Droit public des activités économiques - Corrections</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Droit international privé - Cours</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Droit international privé - Corrections</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Procédures collectives et sûretés - Cours</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Procédures collectives et sûretés - Corrections</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Procédure communautaire - Cours</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Procédures civile d'exécution - Cours</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Comptabilité privée - Cours</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Finances publiques - Cours</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>REUNION</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>TEST</name>
-            </course>
-        </courses>
+            </conference>
+        </conferences>
     </department>
 
     <department>
         <name>AE</name>
-        <courses>
-            <course>
+        <conferences>
+            <conference>
                 <name>Administratif_Cours</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Adm_Correction</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Civil_Correction</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Commercial_Correctio</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Commercial_Cours</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Deontologie_Cours</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Droit civil - Cours</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Methodo_Oraux</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Penal_Correction</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Penal_Cours</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Procedures_Cours</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Reunion_info</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Social_Corrections</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>Social_Cours</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>REUNION</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>TEST</name>
-            </course>
-        </courses>
+            </conference>
+        </conferences>
     </department>
 
     <department>
         <name>ENM</name>
-        <courses>
-            <course>
+        <conferences>
+            <conference>
                 <name>TEST</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>REUNION</name>
-            </course>
-        </courses>
+            </conference>
+        </conferences>
     </department>
                 
 
     <department>
         <name>FJP</name>
-        <courses>
-            <course>
+        <conferences>
+            <conference>
                 <name>TEST</name>
-            </course>
-            <course>
+            </conference>
+            <conference>
                 <name>REUNION</name>
-            </course>
-        </courses>
+            </conference>
+        </conferences>
     </department>
 
 </teleoddcast>
index a4d9b40197eec7661c2ccc72905f760843b1dba4..e5695ab1ab1d06e35843e3a08b7581f06aae3bd1 100644 (file)
@@ -1,7 +1,7 @@
 Server=localhost
 Port=8000
 ServerPassword=source2parisson
-ServerMountpoint=/My_station_-_CRFPA_-_Procedure_penale_-_Cours.ogg
+ServerMountpoint=/Default_School_-_Computer_-_Conference_1.ogg
 ServerPublic=0
 AutomaticReconnectSecs=10
 Encode=OggVorbis
@@ -13,8 +13,8 @@ ServerType=Icecast2
 ExternalFile=/home/pre-barreau/augustins/audio/
 #YP Settings
 ServerStreamURL=http://www.pre-barreau.com
-ServerName=My_station_-_CRFPA_-_Procedure_penale_-_Cours_-_1
-ServerDescription=My_station_-_CRFPA_-_Procedure_penale_-_Cours_-_1_-_GP_-_GP
+ServerName=Default_School_-_Computer_-_Conference_1
+ServerDescription=Default_School_-_Computer_-_Conference_1_-_1_-_azefdoj_-_azef
 ServerGenre=Teaching
 #Advanced Settings
 LogLevel=1
index 686cb433b4bd1536aa52b297b20755ca0e9070a9..230cb8d64bed533c7f32223962433c062c8995d8 100755 (executable)
@@ -20,8 +20,7 @@
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 """
 
-version = '0.3.1'
-
+version = '0.3.2'
 
 import os
 import cgi
@@ -34,27 +33,27 @@ from tools import *
 from mutagen.oggvorbis import OggVorbis
 
 
-class Course:
-    """A course in a class room"""
+class Conference:
+    """A conference object including metadata"""
     
     def __init__(self, dict):
         self.title = dict['title']
         self.department = dict['department']
-        self.course = dict['course']
+        self.conference = dict['conference']
         self.session = dict['session']
         self.professor = dict['professor']
         self.comment = dict['comment']
 
     def get_info(self):
-        return self.title, self.department, self.course, self.session, self.professor, self.comment
+        return self.title, self.department, self.conference, self.session, self.professor, self.comment
 
 
-class Station(Course):
+class Station(Conference):
     """Control the Oddcastv3-jack thread which send audio data to the icecast server
     and the Streamripper thread which write audio on the hard disk"""
     
-    def __init__(self, conf_file, course_dict, lock_file):
-        Course.__init__(self, course_dict)
+    def __init__(self, conf_file, conference_dict, lock_file):
+        Conference.__init__(self, conference_dict)
         self.date = datetime.datetime.now().strftime("%Y")
         self.conf = xml2dict(conf_file)
         self.conf = self.conf['teleoddcast']
@@ -65,13 +64,13 @@ class Station(Course):
         self.password = self.conf['server']['sourcepassword']
         self.url = 'http://'+self.host+':'+self.port
         self.odd_conf_file = self.conf['server']['odd_conf_file']
-        self.description = [self.title, self.department, self.course, self.session, self.professor, self.comment]
-        self.server_name = [self.title, self.department, self.course]
+        self.description = [self.title, self.department, self.conference, self.session, self.professor, self.comment]
+        self.server_name = [self.title, self.department, self.conference]
         self.ServerDescription = clean_string('_-_'.join(self.description))
         self.ServerName = clean_string('_-_'.join(self.server_name))
         self.mount_point = '/' + clean_string(self.title) + '_-_' + \
                                  clean_string(self.department) + '_-_' + \
-                                 clean_string(self.course)+'.ogg'
+                                 clean_string(self.conference)+'.ogg'
         self.lock_file = self.root_dir + os.sep + self.conf['server']['lock_file']
         self.filename = self.ServerDescription + '.ogg'
         self.output_dir = self.media_dir + os.sep + self.department + os.sep + self.date
@@ -111,7 +110,7 @@ class Station(Course):
         oddconf.close()
 
     def start_oddcast(self):
-        command = 'oddcastv3 -n "'+clean_string(self.course)[0:16]+'" -c '+self.odd_conf_file+ \
+        command = 'oddcastv3 -n "'+clean_string(self.conference)[0:16]+'" -c '+self.odd_conf_file+ \
                   ' alsa_pcm:capture_1 alsa_pcm:capture_2 > /dev/null &'
         os.system(command)
         self.set_lock()
@@ -180,8 +179,7 @@ class Station(Course):
         self.del_lock()
         self.mp3_convert()
 
-    def start_mp3cast(self):
-        
+    def start_mp3cast(self):        
         item_id = item_id
         source = source
         metadata = metadata
@@ -199,8 +197,7 @@ class Station(Course):
             yield chunk
     
     def core_process(self, command, buffer_size, dest):
-        """Encode and stream audio data through a generator"""
-        
+        """Encode and stream audio data through a generator"""     
         __chunk = 0
         file_out = open(dest,'w')
         try:
@@ -226,7 +223,8 @@ class Station(Course):
         file_out.close()
         
 class WebView:
-
+    """Gives the web CGI frontend"""
+    
     def __init__(self, school_file):
         self.conf = xml2dict(school_file)
         self.conf = self.conf['teleoddcast']
@@ -235,9 +233,9 @@ class WebView:
         self.title = self.conf['title']
         self.departments = self.conf['department']
         #print self.departments
-        #self.courses = self.conf['department']['courses']
+        #self.conferences = self.conf['department']['conferences']
         self.len_departments = len(self.departments)
-        self.course_nb_max = 40 
+        self.conference_nb_max = 40
 
     def header(self):
         # Required header that tells the browser how to render the HTML.
@@ -251,25 +249,25 @@ class WebView:
         print '{var j; var i = formulaire.department.selectedIndex;'
         print 'if (i == 0)'
         print   'for(j = 1; j < '+ str(self.len_departments) + '; j++)'
-        print      'formulaire.course.options[j].text="";'
-        #print      'formulaire.course.options[j].value="";'
+        print      'formulaire.conference.options[j].text="";'
+        #print      'formulaire.conference.options[j].value="";'
         print 'else{'
         print '   switch (i){'
         for k in range(0, self.len_departments):
             department = self.departments[k]
-            courses = department['courses']
-            #print courses
-            courses_t = dict2tuple(courses)
-            #print courses
-            courses = '"'+'","'.join(courses_t)+'"'
-            print '       case '+str(k+1)+' : var text = new Array('+courses+'); '
+            conferences = department['conferences']
+            #print conferences
+            conferences_t = dict2tuple(conferences)
+            #print conferences
+            conferences = '"'+'","'.join(conferences_t)+'"'
+            print '       case '+str(k+1)+' : var text = new Array('+conferences+'); '
             print '       break;'
         print '       }'
-        print '      for(j = 0; j<'+str(self.course_nb_max)+'; j++)'
-        print '       formulaire.course.options[j+1].text=text[j];'
-        #print '       formulaire.course.options[j+1].value=text[j];'
+        print '      for(j = 0; j<'+str(self.conference_nb_max)+'; j++)'
+        print '       formulaire.conference.options[j+1].text=text[j];'
+        #print '       formulaire.conference.options[j+1].value=text[j];'
         print '}'
-        print '      formulaire.course.selectedIndex=0;}'
+        print '      formulaire.conference.selectedIndex=0;}'
         print '</script>'
         print "</HEAD>"
         
@@ -280,8 +278,9 @@ class WebView:
         print "</div>"
 
     def colophon(self):
+        date = datetime.datetime.now().strftime("%Y")
         print "<div id=\"colophon\">"
-        print "TeleOddCast "+version+" &copy; <span>2007</span>&nbsp;<a href=\"http://parisson.com\">Parisson</a>. Tous droits r&eacute;serv&eacute;s."
+        print "TeleOddCast "+version+" &copy; <span>"+date+"</span>&nbsp;<a href=\"http://parisson.com\">Parisson</a>. Tous droits r&eacute;serv&eacute;s."
         print "</div>"
             
     def footer(self):
@@ -305,9 +304,9 @@ class WebView:
         print "</select></TD></TR>"
         
         print "\t\t<TR><TH align=\"left\">Intitul&eacute; du cours :</TH>"
-        print "<TD><select name=\"course\">"
+        print "<TD><select name=\"conference\">"
         print "<option selected>...........Choisissez un intitul&eacute;...........</option>"
-        for i in range(1,self.course_nb_max):
+        for i in range(1,self.conference_nb_max):
             print "<option></option>"
         print "</select></TD></TR>"
 
@@ -332,13 +331,13 @@ class WebView:
         self.footer()
 
 
-    def stop_form(self, course_dict):
+    def stop_form(self, conference_dict):
         """Stop page"""
-        department = course_dict['department']
-        course = course_dict['course']
-        session = course_dict['session']
-        professor = course_dict['professor']
-        comment = course_dict['comment']
+        department = conference_dict['department']
+        conference = conference_dict['conference']
+        session = conference_dict['session']
+        professor = conference_dict['professor']
+        comment = conference_dict['comment']
 
         self.header()
         print "<div id=\"main\">"
@@ -348,14 +347,14 @@ class WebView:
         print "\t\t<FORM METHOD = post ACTION = \"teleoddcast.py\">"
         print "\t\t<TR><TH align=\"left\">Titre :</TH><TD>"+self.title+"</TD></TR>"
         print "\t\t<TR><TH align=\"left\">D&eacute;partement :</TH><TD>"+department+"</TD><TR>"
-        print "\t\t<TR><TH align=\"left\">Intitul&eacute; du cours :</TH><TD>"+course+"</TD><TR>"
+        print "\t\t<TR><TH align=\"left\">Intitul&eacute; du cours :</TH><TD>"+conference+"</TD><TR>"
         print "\t\t<TR><TH align=\"left\">Session :</TH><TD>"+session+"</TD><TR>"
         print "\t\t<TR><TH align=\"left\">Professeur :</TH><TD>"+professor+"</TD><TR>"
         print "\t\t<TR><TH align=\"left\">Commentaire :</TH><TD>"+comment+"</TD><TR>"
         print "\t</TABLE>"
         print "<hr>"
         print "<h5><a href=\""+self.url+":"+self.port+"/"+clean_string(self.title) + \
-              "_-_"+clean_string(department)+"_-_"+clean_string(course) + \
+              "_-_"+clean_string(department)+"_-_"+clean_string(conference) + \
               ".ogg.m3u\">Cliquez ici pour &eacute;couter cette formation en direct</a></h5>"
         print "</div>"
         print "<div id=\"tools\">"
@@ -367,7 +366,6 @@ class WebView:
         self.footer()
 
 
-
 class TeleOddCast:
     """Manage the calls of Station and Webview to get the network and
     disk streams"""
@@ -391,29 +389,29 @@ class TeleOddCast:
         form = cgi.FieldStorage()
         
         if self.odd_pid == [] and form.has_key("action") and \
-            form.has_key("department") and form.has_key("course") and \
+            form.has_key("department") and form.has_key("conference") and \
             form.has_key("professor") and form.has_key("comment") and \
             form["action"].value == "start":
             
-            self.course_dict = {'title': self.title,
+            self.conference_dict = {'title': self.title,
                         'department': form["department"].value,
-                        'course': form["course"].value,
+                        'conference': form["conference"].value,
                         'session': form["session"].value,
                         'professor': form["professor"].value,
                         'comment': form["comment"].value}
 
-            s = Station(self.conf_file, self.course_dict, self.lock_file)
+            s = Station(self.conf_file, self.conference_dict, self.lock_file)
             s.start()
-            w.stop_form(self.course_dict)
+            w.stop_form(self.conference_dict)
             
         elif self.odd_pid != [] and os.path.exists(self.lock_file) and not form.has_key("action"):
-            self.course_dict = get_course_from_lock(self.lock_file)
-            w.stop_form(self.course_dict)
+            self.conference_dict = get_conference_from_lock(self.lock_file)
+            w.stop_form(self.conference_dict)
 
         elif self.odd_pid != [] and form.has_key("action") and form["action"].value == "stop":
             if os.path.exists(self.lock_file):
-                self.course_dict = get_course_from_lock(self.lock_file)
-            s = Station(self.conf_file, self.course_dict, self.lock_file)
+                self.conference_dict = get_conference_from_lock(self.lock_file)
+            s = Station(self.conf_file, self.conference_dict, self.lock_file)
             s.stop()
             w.start_form()
 
@@ -423,7 +421,7 @@ class TeleOddCast:
 
 # Call main function.
 conf_file = 'etc/teleoddcast.xml'
-school_file = 'etc/default_courses.xml'
+school_file = 'etc/default_conferences.xml'
 
 if __name__ == '__main__':
     t = TeleOddCast(conf_file, school_file)
index 64ca216c566069ba0454879e76246aedbdca2068..4e28098b42993a48c360fb637c07bad436fc976c 100644 (file)
--- a/tools.py
+++ b/tools.py
@@ -68,35 +68,35 @@ def get_params_from_lock(lock_file):
     return params_ok
 
 def dict2tuple(dict):
-    len_dict = len(dict['course'])
+    len_dict = len(dict['conference'])
     if len_dict == 1:
-        return dict['course']['name']
+        return dict['conference']['name']
     else:
         tup = []
-        for value in dict['course']:
+        for value in dict['conference']:
             tup.append(value['name'])
         return tup
 
 def dict2tuple_iso(dict):
-    len_dict = len(dict['course'])
+    len_dict = len(dict['conference'])
     if len_dict == 1:
-        return unicode(dict['course']['name'],'utf8').encode('iso-8859-1')
+        return unicode(dict['conference']['name'],'utf8').encode('iso-8859-1')
     else:
         tup = []
-        for value in dict['course']:
+        for value in dict['conference']:
             tup.append(unicode(value['name'],'utf8').encode('iso-8859-1'))
         return tup
 
-def get_course_from_lock(lock_file):
+def get_conference_from_lock(lock_file):
     lockfile = open(lock_file,'r')
-    course = lockfile.readline()
-    course_l = course.split('_*_')
-    course_dict = {'title': course_l[0],
-                   'department': course_l[1],
-                   'course': course_l[2],
-                   'session': course_l[3],
-                   'professor': course_l[4],
-                   'comment': course_l[5]}
+    conference = lockfile.readline()
+    conference_l = conference.split('_*_')
+    conference_dict = {'title': conference_l[0],
+                   'department': conference_l[1],
+                   'conference': conference_l[2],
+                   'session': conference_l[3],
+                   'professor': conference_l[4],
+                   'comment': conference_l[5]}
     lockfile.close()
-    return course_dict
+    return conference_dict