view data/plugin/action/submit_bbb_start_meeting.py @ 599:31ef7dc6168a

bbb: action submit_bbb_start_meeting introduced and similar code from submit_bbb_create_meeting amd bbb_create removed. Meetings have to be started by the responsible moderator before someone else can join.
author Reimar Bauer <rb.proj AT googlemail DOT com>
date Thu, 14 Jun 2012 09:38:07 +0200
parents
children 7909cd319ce8
line wrap: on
line source
# -*- coding: utf-8 -*-
"""
    MoinMoin - Starts Meeting for bigbluebutton

    @copyright: 2012 MoinMoin:ReimarBauer
    @license: GNU GPL, see COPYING for details.
"""
import urllib
from MoinMoin.Page import Page
# pip install bigbluebutton
from bigbluebutton import Meeting_Setup
import bbb_settings


def execute(pagename, request):
    """
    Lets a Moderator of a meeting start this.
    It requires a bbb_admin_group defined in wikiconfig.py.
    Only a user of this group is allowed to use this action. 
    On same directory as wikiconfig.py you need
    a "bbb_settings.py" module with the SALT and the BBB_API_URL.
    """

    _ = request.getText
    username = request.user.name
    groups = request.groups
    msg, state = ("Sorry you have not enough priviledges!", "error")
    try:
        bbb_admin_group = groups.get(request.cfg.bbb_admin_group, [])
    except AttributeError:
        request.theme.add_msg(msg[0], msg[1])
        Page(request, pagename).send_page()
        return

    if request.user.valid and username in bbb_admin_group:
        if request.args and request.args["action"] == u'submit_bbb_start_meeting':
            content = request.dicts.get(pagename, {})
            msg, state = ("You have not this priviledge to start this meeting!", "error")
            responsible = content["responsible"]
            if request.user.name != responsible:
                request.theme.add_msg(msg, state)
                Page(request, pagename).send_page()
                return

            attendee_password = content["attendee_password"]
            moderator_password = content["moderator_password"]
            msg, state = ("Sorry, we don't support empty passwords!", "error")
            if not attendee_password.strip() or not moderator_password.strip():
                request.theme.add_msg(msg, state)
                Page(request, pagename).send_page()

                return
            meeting_id = content["meeting_id"]
            meeting_name = content["meeting_name"]
            recreate = True
            scriptname = request.script_root
            if scriptname:
                scriptname = scriptname.lstrip('/') + '/'
            url = "%s%s%s" % (request.host_url, scriptname, pagename.lstrip('/'))
            msg, state = ("Meeting started ", "info")
            try:
                session = Meeting_Setup(bbb_api_url=bbb_settings.BBB_API_URL, salt=bbb_settings.SALT,
                                    meeting_name=meeting_name, meeting_id=meeting_id,
                                    attendee_password=attendee_password,
                                    moderator_password=moderator_password,
                                    logout_url=url,
                                    )
                try:
                    session.create_meeting()
                except TypeError:
                    recreate = False
                    msg, state = ("Usually the meeting is running and you tried to change some important parameters. Stop the Meeting beforehand.", "error")

            except KeyError:
                msg, state = ("Usually not the right parameters or syntax used! Check the page content.  ", "error")
                recreate = False


        request.theme.add_msg(msg, state)
        Page(request, pagename).send_page()