Mercurial > public > src > moin > extensions
view data/plugin/parser/bbb_create.py @ 597:0b31dafef3cf
bbb: script name added to url
author | Reimar Bauer <rb.proj AT googlemail DOT com> |
---|---|
date | Wed, 13 Jun 2012 10:18:12 +0200 |
parents | 84ef153f8363 |
children | 31ef7dc6168a |
line wrap: on
line source
# -*- coding: utf-8 -*- """ MoinMoin - Parser for creating a bigbluebutton meeting (http://www.bigbluebutton.org/) @copyright: 2012 MoinMoin:ReimarBauer @license: GNU GPL, see COPYING for details. """ import time from MoinMoin import wikiutil # pip install bigbluebutton from bigbluebutton import Meeting_Setup, Meeting import bbb_settings Dependencies = [] class Parser: """ Lets a user create a meeting. It requires a bbb_admin_group defined in wikiconfig.py. Only a user of this group is allowed to use this parser. On same directory as wikiconfig.py you need a "bbb_settings.py" module with the SALT and the BBB_API_URL. Example: #acl YOURNAME:read,write,delete,revert All: #format bbb_create responsible:: YOURNAME meeting_name:: The name of the meeting meeting_id:: The ID of the meeting attendee_password:: The password for attendee (viewer) moderator_password:: The password for moderator """ extensions = '' Dependencies = [] def __init__(self, raw, request, **kw): self.raw = raw self.request = request self.form = request.form self._ = request.getText self.start_line = kw.get('start_line', 0) def format(self, formatter): """ Send the text. """ pagename = formatter.page.page_name content = self.request.dicts.get(pagename, {}) request = self.request username = request.user.name groups = request.groups try: bbb_admin_group = groups.get(request.cfg.bbb_admin_group, []) except AttributeError: 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 msg = "" attendee_password = content["attendee_password"] moderator_password = content["moderator_password"] meeting_id = content["meeting_id"] 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 if request.user.valid and username in bbb_admin_group: recreate = True scriptname = request.script_root if scriptname: scriptname = scriptname.lstrip('/') + '/' url = "%s%s%s" % (request.host_url, scriptname, pagename.lstrip('/')) msg = "(!) Meeting started :) " try: session = Meeting_Setup(bbb_api_url=bbb_settings.BBB_API_URL, salt=bbb_settings.SALT, meeting_name=content["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 = "/!\ Usually the meeting is running and you tried to change some important parameters. Stop the Meeting beforehand. X-(" except KeyError: msg = "/!\ Usually not the right parameters or syntax used! X-( " recreate = False actions = [] if request.user.valid and request.user.may.read(pagename): meeting = Meeting(bbb_settings.BBB_API_URL, bbb_settings.SALT) 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: if msg: msg += "\n\n/!\ A Moderator has to join this meeting before someone else can join in!" else: msg = " /!\ A Moderator has to join this meeting before someone else can join in!" if request.user.may.write(pagename): if meeting.is_running(meeting_id): msg += "\n\n(!) Someone else is already attending this meeting" 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}) 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 request.user.may.delete(pagename): actions.append(u' . <<Action(DeletePage, text="remove meeting permanently")>>') else: if request.user.valid and request.user.may.write(pagename): actions.append(u' . <<Action(edit, text="edit meeting")>>') raw = u""" %(msg)s {{{#!wiki dotted %(actions)s }}} """ % {"msg": msg, "actions": '\n'.join(actions) } wiki_parser = wikiutil.importPlugin(self.request.cfg, "parser", "text_moin_wiki", None) wiki_parser = wiki_parser.Parser(raw, self.request) wiki_parser.format(formatter)