Allow to associate a URL to a room, for example a link to a video
conference room. Tracks assigned to this room will automatically inherit
the link. The link for a given track can be overridden using the "url"
command.
This allows organizers to provide video links for each room, while still
enabling teams to link to whatever they end up really using.
Change-Id: I633eb83c579e4093ae769bcd053e4d2ec2fe4bc3
With this change, the ptgbot will generate links for each track
etherpad, display them on a specific page (etherpads.html) and
allow track moderators to override the autogenerated link using
the #track etherpad command.
It requires the database to contain an 'eventid' key which serves
as a unique etherpads prefix.
Change-Id: Iaa524530e9f2506369f180588a2b6f98f4cad3d1
It is sometimes useful to mark certain rooms as having specific
capabilities like videoprojection. This change adds the possibility
to assign a glyphicon (cap_icon) and a mouseover description
(cap_desc) for the rooms in the schedule dictionary.
Change-Id: I343c28acc3ad6015d3382d526511f153bf38a0e6
Data presence was not reset on a new day cleanup, while it
is almost certainly stale at this point. Hopefully.
Change-Id: Ifc4cdedf6c365f92e5ff001d1485c8fee21b396f
While originally created as an OrderedDict, some data tables
were reset to a basic dictionary on a #newday command.
Change-Id: I62539a8c7130eac5eb666af019b7c94078666656
Add a new 'subscribe' command which allows people to subscribe for
automatic notifications via direct message of topics which match the
subscription regex they provide. With no regex argument it shows the
user's current subscription (if any). Also add a new 'unsubscribe'
command for clearing the regex.
Example use cases:
1. I know that nova is planning to discuss $TOPIC some time tomorrow
but they don't know exactly when, and I want to spend most of the
day in another room whilst ensuring I don't miss that particular
discussion on $TOPIC => "/msg ptgbot subscribe $TOPIC" will give me
notifications when the PTL types "#nova next $TOPIC" and "#nova now
$TOPIC".
2. I'm interested in *all* discussion on Python 3. I don't know which
projects are planning to discuss it, let alone when, but that
doesn't matter, because I can type "/msg ptgbot subscribe python ?3"
and get notified of all Python 3 discussions.
As with the presence tracking commands, these commands can be used in
public channels by preceding them with a '#' character.
Change-Id: I3f51acc318ecf31d435768640cef6c46d8ca136c
Add in/out/seen commands to let people voluntarily check in and out of
tracks and other arbitrary locations, to make it easy for others to
find them. Of course this is entirely optional.
It's designed to cope gracefully with people forgetting to check out
of locations they previously checked into.
Change-Id: I0d88a540ad7a333841c208dd7f2a7247897eb238
Current system (where the index page is specified in the
puppet-ptgbot module) requires that (some) links on the page
are updated in puppet-ptgbot at the start of every event.
That page should be dynamically generated from JSON data.
That way the list of links can be provided in the JSON database
and dynamically imported and updated using the ~fetchdb command.
Change-Id: I7d82b38cba495e5837ba54fbe7a9b7e9c8e14259
Add admin command to add (and clean) a message of the day (motd)
to the rendered page. Can be used for emergency messages (using
level 'danger') or more general information.
Change-Id: Ie84d1a826c2f84a7ccdafd08176eef9aa2c5a3f1
The base schedule was specified in the bot configuration file,
which made it a bit painful to do last-minute configuration.
The bot shall load a basic minimal database and support being
configured online instead, using commands and json imports.
This change removes the schedule loading from configuration,
and replaces it with a function to update the database using
a provided JSON URL (the ~fetchdb admin command).
Change-Id: I4e7a79baf88cce8d827eb66b1b0c26584c62c8d7
The bookable rooms functionality was bolted on top of the "normal"
schedule table using a separate table in the JSON and the config.
Now that bookable rooms are shown together with "regular" rooms,
we can merge the two concept and pay back that technical debt.
This is an incompatible JSON change so the database will have to
be ~reload-ed from configuration.
Change-Id: Ia37b6202b363614418b562b693b3dd807621aa97
The package for this installs an entrypoint wrapper, so there's
little point in declaring an interpreter in individual modules.
Further, the existing shebangs misleadingly ran python when we only
intend to support python3. Just remove them to avoid confusion.
Change-Id: I62e761719dbf6c357d5b1564ff21b5722b99722c
By default, allow anyone in channel to issue track moderation
commands (as that greatly simplifies administration). Add
two admin commands to allow toggling that behavior on and off.
Change-Id: I5dc95a1ea14b49c1882bd715b8fbdc3344867b64
Wiping the database was no longer very useful. Replace this
with a ~reload action that reload base data from configuration.
Change-Id: Iaa55a2060053f77dd2ab1072e59b21a28812f213
The BASE content gets corrupted due to use of shallow copy
in dictionary copy operations. Use copy.deepcopy instead.
Change-Id: Ia29ccf1f60322c2de16309b7dd998ddf182917b4
Separate the dataloading from the database class init,
so that it can be reused to reload base data on the fly.
Change-Id: I3c591c71e77fd04e3d4dcf4fcb8378eb66a7acfb
The get_track_room function failed to also look in
additional rooms to find the room for a given track.
If the event is not running in the current day, we
should default to the first day of the event (useful
for tests and the day before the event starts).
Change-Id: I143eb3b490b3536679e0608064209ec71ed37499
The ~newday admin command cleans up now/next/location to
get to a fresh start at the beginning of a new day / end of
previous day.
Change-Id: I0a274164939a37e4a3aa9f734d4aebdc4cd82bf3
Available room slots can be booked for any track through
the ptgbot new #book command, referencing the slot code.
Change-Id: I0c661e448568c7f2f26fb296e3f2506ba1ed44ba
Allow to configure a schedule for scheduled rooms and
a number of available time slots in additional rooms.
Change-Id: Ibb4650cc73c08dc5c4328a8a844ed54fac991f84
In order to be able to specify topic/room assignments, we need
a map of the available time slots. Specify that at the config
level.
Change-Id: I58e3d13e169a66c10e74ec9faa97243a40f14ee0
Since a given theme/team may meet in several different
locations during the week, let's call that a "track"
rather than a "room" (which was a confusing concept
since we had "location" as well).
Change-Id: I0978f4c8b33954f53698d8a058b9a802556e56c1
In preparation for the fully IRC-driven system,
remove the code getting extra info from ethercalc.
Change-Id: I1a7092803630a790290205f0b202bc347c3f18c0
This provides a sorting of the room list by iterating the total list
of rooms, and displaying information per room if available. Without
this the order of rooms jumps on each save based on the fact that it's
a dict/object and has no natural sort order. That can feel very
confusing.
Change-Id: I5375374091296cd7c23a3a8e2272aefcf6b2d896
One of the things that's hard about using the ptg page is that you
don't know where things are located. This allows you to set the
location on a room, which is displayed in a 3rd column, and will be
persistent after a new set of now (thus not requiring everyone to
remember to include it in their updates).
Change-Id: I12bac56e29cc5974d5c925f23eb94945e6e36421
Allow room managers to set the colors of rooms.
Change-Id: I252d52db0cdf6c25e7c9be95c0debb49bd983cbd
Signed-off-by: Doug Hellmann <doug@doughellmann.com>
With a sizeable list of rooms managed by the bot, it can get
a little hard to find a specific room in the list if they
are added in random order. To make it a little easier to
visually parse the list, sort the room names.
Change-Id: Ia68c36346ea5fe542b6708a3f02ea911f348bc36
Move config to a JSON file in order to allow for complex
configuration of the ethercalc data model.
Change-Id: I0d18bc6aa3fd8ea1739c64a3d488145435bebb4f
Rooms must match a defined set of active rooms.
Add !add !del !list commands in order to manage the room list.
Also add a !clean command to remove session entries from a given
set of rooms. All commands take a list of rooms as argument.
Change-Id: I4130c49cc2a3985c440d5b9205f1900daaf46d3d