StatusBoard is a Tornado application we use to display a Web page with info about things that are going on around our office.
The app uses SSE (wrapped with BTHEventSource) to communicate with browsers.
The config.py.default file defines a single channel for Pinger. channel_name will be used as an SSE event name.
Workers provide data for channels. There are two types of workers:
StatusBoard.worker.PeriodicWorker- invoked periodically at a given interval,StatusBoard.worker.ScheduledWorker- one-shot worker invoked after scheduling.
There are four workers in the box:
StatusBoard.workers.PingerWorker- pings computers defined in config to determine number of present and absent people,StatusBoard.workers.RedmineWorker- connects the app to Redmine instance to provide info about projects status,StatusBoard.workers.YahooWeatherWorker- fetches weather info from Yahoo! Weather,StatusBoard.workers.XMPPBot- controls XMPP bot that feeds Breaking News section.
config.py contains a dictionary that'll be loaded by status_board and passed to Tornado app. It's the place to provide app's config. For more info about default fields see Tornado.
App-specific config dict fields:
xmpp_bot- XMPP bot config. database field should contain absolute path to a SQLite file created bystatus_board_setup_dborNoneif you wish to ignore the DB.people- list of dicts containing people definition. Mandatory fields arenameandgravatar_mail.ipis used by PingerWorker.jidis used by XMPPBot,redmine_mailby RedmineWorker and workers will fall back togravatar_mailautomagically if their fields aren't present.redmine.issue_trackers- contains a dict of issue trackers. The syntax is<id>: "<name>". Consult Redmine API for more info.- The rest is pretty self-explanatory so it's pointless to document it :).
The file also contains a dict of channel definitions. The syntax is '<channel_name>': WorkerClass. The status_board script will set up workers for the channels.
If you wish to add your logos to the app place files logo.png and blanker_logo.png in app_config['logo_path']. config.py sets logo_path to the directory where the file is located. Feel free to change the path.
Use a 187px x 119px image for logo.png. blanker_logo.png will be centered in the viewport automatically.
Weather state icons: http://vclouds.deviantart.com/art/VClouds-Weather-Icons-179152045 (CC BY-NC-SA 3.0)
- Create a virtualenv, activate it, clone the repo and cd to it,
python setup.py install(requires distribute)cp config.py.default config.pystatus_board_setup_db(optional)vim config.pystatus_board- Point the browser to app's URL (see
status_board --helpfor info). - Sit down and watch the magic happen.
- Profit?
BSD License


