changeset 606:7909cd319ce8

bbb: bug fix for parser lookup by extensions. We check now if bigbluebutton lib is installed.
author Reimar Bauer <rb.proj AT googlemail DOT com>
date Fri, 22 Jun 2012 19:21:46 +0200
parents c378af5f401b
children e03dd52cddd8
files data/plugin/action/submit_bbb_close_meeting.py data/plugin/action/submit_bbb_join_meeting.py data/plugin/action/submit_bbb_start_meeting.py data/plugin/macro/bbb.py data/plugin/parser/bbb_create.py
diffstat 5 files changed, 140 insertions(+), 94 deletions(-) [+]
line wrap: on
line diff
--- a/data/plugin/action/submit_bbb_close_meeting.py	Fri Jun 15 11:02:34 2012 +0200
+++ b/data/plugin/action/submit_bbb_close_meeting.py	Fri Jun 22 19:21:46 2012 +0200
@@ -8,9 +8,14 @@
 import urllib
 from MoinMoin.Page import Page
 # pip install bigbluebutton
-from bigbluebutton import Meeting
-import bbb_settings
-
+try:
+    from bigbluebutton import Meeting
+except ImportError:
+    Meeting = None
+try:    
+    import bbb_settings
+except ImportError:
+    bbb_settings = None
 
 def execute(pagename, request):
     """
@@ -27,7 +32,12 @@
     ||<-2:> <<FormSubmit(Send)>> ||
     <<FormFooter()>>
     """
-
+    if Meeting is None or bbb_settings is None:
+        msg, state = ("bigbluebutton module not installed or bbb_settings missing!", "error")
+        request.theme.add_msg(msg, state)
+        Page(request, pagename).send_page()
+        return
+    
     _ = request.getText
     username = request.user.name
     groups = request.groups
--- a/data/plugin/action/submit_bbb_join_meeting.py	Fri Jun 15 11:02:34 2012 +0200
+++ b/data/plugin/action/submit_bbb_join_meeting.py	Fri Jun 22 19:21:46 2012 +0200
@@ -8,8 +8,14 @@
 import urllib
 from MoinMoin.Page import Page
 # pip install bigbluebutton
-from bigbluebutton import Meeting
-import bbb_settings
+try:
+    from bigbluebutton import Meeting
+except ImportError:
+    Meeting = None
+try:    
+    import bbb_settings
+except ImportError:
+    bbb_settings = None
 
 
 def execute(pagename, request):
@@ -26,6 +32,12 @@
     ||<-2:> <<FormSubmit(Send)>> ||
     <<FormFooter()>>
     """
+    if Meeting is None or bbb_settings is None:
+        msg, state = ("bigbluebutton module not installed or bbb_settings missing!", "error")
+        request.theme.add_msg(msg, state)
+        Page(request, pagename).send_page()
+        return
+
     _ = request.getText
     meeting = Meeting(bbb_settings.BBB_API_URL, bbb_settings.SALT)
     url = meeting.join_url(request.form["meeting_id"], request.form["name"], request.form["password"])
--- a/data/plugin/action/submit_bbb_start_meeting.py	Fri Jun 15 11:02:34 2012 +0200
+++ b/data/plugin/action/submit_bbb_start_meeting.py	Fri Jun 22 19:21:46 2012 +0200
@@ -8,9 +8,14 @@
 import urllib
 from MoinMoin.Page import Page
 # pip install bigbluebutton
-from bigbluebutton import Meeting_Setup
-import bbb_settings
-
+try:
+    from bigbluebutton import Meeting_Setup
+except ImportError:
+    Meeting_Setup = None
+try:    
+    import bbb_settings
+except ImportError:
+    bbb_settings = None
 
 def execute(pagename, request):
     """
@@ -20,6 +25,11 @@
     On same directory as wikiconfig.py you need
     a "bbb_settings.py" module with the SALT and the BBB_API_URL.
     """
+    if Meeting_Setup is None or bbb_settings is None:
+        msg, state = ("bigbluebutton module not installed or bbb_settings missing!", "error")
+        request.theme.add_msg(msg, state)
+        Page(request, pagename).send_page()
+        return
 
     _ = request.getText
     username = request.user.name
--- a/data/plugin/macro/bbb.py	Fri Jun 15 11:02:34 2012 +0200
+++ b/data/plugin/macro/bbb.py	Fri Jun 22 19:21:46 2012 +0200
@@ -9,8 +9,14 @@
 from MoinMoin import wikiutil
 from MoinMoin.Page import Page
 # pip install bigbluebutton
-from bigbluebutton import Meeting
-import bbb_settings
+try:
+    from bigbluebutton import Meeting
+except ImportError:
+    Meeting = None
+try:    
+    import bbb_settings
+except ImportError:
+    bbb_settings = None
 
 
 def macro_bbb(macro):
@@ -22,6 +28,8 @@
     Example:
     <<bbb>>
     """
+    if Meeting is None or bbb_settings is None:
+        return u""
     request = macro.request
     _ = request.getText
     meeting = Meeting(bbb_settings.BBB_API_URL, bbb_settings.SALT)
--- a/data/plugin/parser/bbb_create.py	Fri Jun 15 11:02:34 2012 +0200
+++ b/data/plugin/parser/bbb_create.py	Fri Jun 22 19:21:46 2012 +0200
@@ -9,8 +9,14 @@
 import time
 from MoinMoin import wikiutil
 # pip install bigbluebutton
-from bigbluebutton import Meeting
-import bbb_settings
+try:
+    from bigbluebutton import Meeting
+except ImportError:
+    Meeting = None
+try:    
+    import bbb_settings
+except ImportError:
+    bbb_settings = None
 
 Dependencies = []
 
@@ -63,88 +69,88 @@
         moderator_password = content["moderator_password"]
         meeting_id = content["meeting_id"]
         responsible = content["responsible"]
-
-        meeting = Meeting(bbb_settings.BBB_API_URL, bbb_settings.SALT)
-        #XXX meeting.is_running is only True if someone had joined in, so we use meeting_info instead
-        meeting_info = meeting.meeting_info(meeting_id, moderator_password)
-       
-        meeting_data = """|| '''Meeting ID''' || '''Participation Count''' || '''Moderator Count'''||
-|| %(meeting_id)s || 0 || 0 ||""" % {"meeting_id": meeting_id
-                                     }
-        if  meeting_info:
+        if Meeting is not None and bbb_settings is not None:
+            meeting = Meeting(bbb_settings.BBB_API_URL, bbb_settings.SALT)
+            #XXX meeting.is_running is only True if someone had joined in, so we use meeting_info instead
+            meeting_info = meeting.meeting_info(meeting_id, moderator_password)
+           
             meeting_data = """|| '''Meeting ID''' || '''Participation Count''' || '''Moderator Count'''||
-|| %(meeting_id)s || %(participant_count)s || %(moderator_count)s ||""" % {"meeting_id": meeting_id,
-                                                                           "participant_count": meeting_info["participant_count"],
-                                                                           "moderator_count": meeting_info["moderator_count"]
-                                                                           }
-
-        if not attendee_password.strip() or not moderator_password.strip():
+    || %(meeting_id)s || 0 || 0 ||""" % {"meeting_id": meeting_id
+                                         }
+            if  meeting_info:
+                meeting_data = """|| '''Meeting ID''' || '''Participation Count''' || '''Moderator Count'''||
+    || %(meeting_id)s || %(participant_count)s || %(moderator_count)s ||""" % {"meeting_id": meeting_id,
+                                                                               "participant_count": meeting_info["participant_count"],
+                                                                               "moderator_count": meeting_info["moderator_count"]
+                                                                               }
+    
+            if not attendee_password.strip() or not moderator_password.strip():
+                wiki_parser = wikiutil.importPlugin(self.request.cfg, "parser", "text_moin_wiki", None)
+                wiki_parser = wiki_parser.Parser(self.raw, self.request)
+                wiki_parser.format(formatter)
+                return
+    
+            actions = []
+            actions_text = ""
+            guest_info_text = ""
+            msg = "\n\n/!\ A Moderator has to start the meeting before someone else can join in!"
+            if request.user.valid and request.user.may.read(pagename):
+                if meeting_info:
+                    msg = "\n\n (!) Meeting is running. Please join in!"
+                    if username == responsible:
+                        actions.append(u' . [[%(moderator_url)s|Join as moderator (%(username)s)]]' % {"moderator_url": meeting.join_url(meeting_id, request.user.name, moderator_password),
+                                                                                                       "username": username})
+    
+                    if meeting.is_running(meeting_id):
+                        actions.append(u' . [[%(attendee_url)s|Join as visitor (%(username)s)]]' % {"attendee_url": meeting.join_url(meeting_id, request.user.name, attendee_password),
+                                                                                                "username": username})
+                    else:
+                        msg = "\n\n/!\ Wait until the moderator has joined this meeting!"
+                else:
+                    if username == responsible:
+                        msg = "\n\n/!\ A Moderator has to start the meeting before someone else can join in!"
+                        actions.append(u' . <<Action(submit_bbb_start_meeting, text="Click to start this meeting")>>')
+    
+                if request.user.may.write(pagename) and meeting_info:
+                    if username == responsible:
+                        actions.append(u' . <<Action(submit_bbb_close_meeting, text="Close this meeting", meeting_id=%(meeting_id)s, password=%(password)s)>>' % {"meeting_id": meeting_id,
+                                                                                                                                                      "password": moderator_password
+                                                                                                                                                  })
+                        
+                        if "GUEST_URL" in bbb_settings.__dict__:
+                            guest_info_text = "(!) External users can get access by using this URL: %s" % bbb_settings.GUEST_URL
+    
+    
+                if not meeting_info and request.user.may.delete(pagename) and username == responsible:
+                    # users with before rights should know to use commands of the menu
+                    actions.append(u' . <<Action(edit, text="edit meeting parameter")>>')
+                    actions.append(u' . <<Action(DeletePage, text="remove meeting permanently")>>')
+    
+                if actions:
+                    actions_text = """{{{#!wiki dotted
+    %(actions)s
+    }}}
+    """ % {"actions": '\n'.join(actions)}
+               
+    
+            raw = u"""
+    %(msg)s
+    
+    Current participants and state of users in this meeting. 
+    
+    %(meeting_data)s
+    
+    %(actions_text)s
+    
+    %(guest_info_text)s
+    """ % {"msg": msg,
+           "meeting_data": meeting_data,
+           "actions_text": actions_text,
+           "guest_info_text": guest_info_text,
+          }
+    
+    
             wiki_parser = wikiutil.importPlugin(self.request.cfg, "parser", "text_moin_wiki", None)
-            wiki_parser = wiki_parser.Parser(self.raw, self.request)
+            wiki_parser = wiki_parser.Parser(raw, self.request)
             wiki_parser.format(formatter)
-            return
-
-        actions = []
-        actions_text = ""
-        guest_info_text = ""
-        msg = "\n\n/!\ A Moderator has to start the meeting before someone else can join in!"
-        if request.user.valid and request.user.may.read(pagename):
-            if meeting_info:
-                msg = "\n\n (!) Meeting is running. Please join in!"
-                if username == responsible:
-                    actions.append(u' . [[%(moderator_url)s|Join as moderator (%(username)s)]]' % {"moderator_url": meeting.join_url(meeting_id, request.user.name, moderator_password),
-                                                                                                   "username": username})
-
-                if meeting.is_running(meeting_id):
-                    actions.append(u' . [[%(attendee_url)s|Join as visitor (%(username)s)]]' % {"attendee_url": meeting.join_url(meeting_id, request.user.name, attendee_password),
-                                                                                            "username": username})
-                else:
-                    msg = "\n\n/!\ Wait until the moderator has joined this meeting!"
-            else:
-                if username == responsible:
-                    msg = "\n\n/!\ A Moderator has to start the meeting before someone else can join in!"
-                    actions.append(u' . <<Action(submit_bbb_start_meeting, text="Click to start this meeting")>>')
 
-            if request.user.may.write(pagename) and meeting_info:
-                if username == responsible:
-                    actions.append(u' . <<Action(submit_bbb_close_meeting, text="Close this meeting", meeting_id=%(meeting_id)s, password=%(password)s)>>' % {"meeting_id": meeting_id,
-                                                                                                                                                  "password": moderator_password
-                                                                                                                                              })
-                    
-                    if "GUEST_URL" in bbb_settings.__dict__:
-                        guest_info_text = "(!) External users can get access by using this URL: %s" % bbb_settings.GUEST_URL
-
-
-            if not meeting_info and request.user.may.delete(pagename) and username == responsible:
-                # users with before rights should know to use commands of the menu
-                actions.append(u' . <<Action(edit, text="edit meeting parameter")>>')
-                actions.append(u' . <<Action(DeletePage, text="remove meeting permanently")>>')
-
-            if actions:
-                actions_text = """{{{#!wiki dotted
-%(actions)s
-}}}
-""" % {"actions": '\n'.join(actions)}
-           
-
-        raw = u"""
-%(msg)s
-
-Current participants and state of users in this meeting. 
-
-%(meeting_data)s
-
-%(actions_text)s
-
-%(guest_info_text)s
-""" % {"msg": msg,
-       "meeting_data": meeting_data,
-       "actions_text": actions_text,
-       "guest_info_text": guest_info_text,
-      }
-
-
-        wiki_parser = wikiutil.importPlugin(self.request.cfg, "parser", "text_moin_wiki", None)
-        wiki_parser = wiki_parser.Parser(raw, self.request)
-        wiki_parser.format(formatter)
-