Old Kegbot Server Notes

Upgrading from a pre-1.0 release

Use the following procedures to upgrade from a pre-1.0 version of Kegbot Server:

## Step 1: Only for installs older than 0.9.32

(kb) $ pip install kegbot==0.9.33
(kb) $ kegbot upgrade

## Step 2: For *all* pre-1.0 installs

(kb) $ pip install kegbot==0.9.35
(kb) $ kegbot upgrade
(kb) $ pip install -U kegbot
(kb) $ kegbot upgrade

See Upgrade from a Previous Version for general instructions.

Pre-1.0 Changelog

Version 1.0.0a6 (2014-06-24)

  • Fixed redirect URL when accessing an admin page.

Version 1.0.0a5 (2014-06-23)

  • Edits to profile images are allowed.
  • Bugfix: API tap create/delete.

Version 1.0.0a4 (2014-06-13)

  • Twitter: Bugfix involving guest checkins.
  • Foursquare: Dropped venue validation.

Version 1.0.0a3 (2014-06-06)

  • Updated upgrade script.
  • Bugfix: Error when reassigning drinks without a username.

Version 1.0.0a2 (2014-06-04)

  • Updated notification templates.

Version 1.0.0a1 (2014-06-04)

  • Rebased migrations, equivalent to v0.9.35.

Version 0.9.35 (2014-06-04)

  • Security: Update to Django 1.6.5.
  • Dropped support for default user.
  • Users can set a display name separate from their username.
  • Guest display name can be altered on user detail page.

Version 0.9.34 (2014-05-30)

  • Internal schema changes.
  • Fixed an error on the backups page.

Version 0.9.33 (2014-05-28)

  • Photos can be deleted (on the Drink page) by the owner or a staff member.
  • Keg images in the web UI are clickable.
  • Webhooks now post full event data (same as /api/events).
  • Bugfix: Fixed validation of new user registration.
  • Bugfix: Fixed an issue that could lead to empty statistics.

Version 0.9.32 (2014-05-20)

  • Bugfix: Errors caused in staff-only registration mode.

Version 0.9.31 (2014-05-19)

  • New “registration mode” setting allows inviting users to closed systems.
  • Bugfix: #274 (extra slash in external URLs).
  • Bugfix: Error when beverage vintage was set.

Version 0.9.30 (2014-05-14)

  • Optional settings are now documented.
  • It is no longer necessary to configure the site’s hostname.
  • The “allowed hosts” setting is no longer stored in the database (see Appendix: Extra Settings.)

Version 0.9.29 (2014-05-07)

  • API: Support for adding and removing taps.
  • New command-line tool kegbot rename_user allows admins to rename users (#271).
  • Bugfix: #270 (linking devices failed in restricted privacy mode).

Version 0.9.28 (2014-05-05)

  • kegbot version now correctly reports the installed version.
  • API: Added version/ endpoint
  • Bugfix: #268 (NFC token assigment).
  • Bugfix: #269 (error during upgrade).

Version 0.9.27 (2014-05-01)

  • Bugfix: #263 (workers not exiting).

Version 0.9.26 (2014-05-01)

Note

Supervisor configuration has changed. Please update your configuration file to match the example.

  • Beverage images are now served as PNGs, preserving transparency.
  • Updated supervisor configuration.
  • Bugfix: #262 (user sessions page).
  • Bugfix: #264 (task failures leading to missing stats).
  • Bugfix: #265 (errors logging in through tablet when site is private).
  • Kegadmin “Logs” tab will now show more logs, not just errors.
  • Foursquare/Untappd bugfixes.
  • Internal: PEP8 cleanup, more unittests.

Version 0.9.25 (2014-04-24)

  • Experimental new commands: kegbot backup and kegbot restore.
  • Bugfix: #262 (user sessions page).
  • Addressed an issue which could lead to incomplete statistics being shown.

Version 0.9.24 (2014-04-20)

  • Updated kegbot run_workers to work without extra environment flags when running under supervisor.
  • Bugfix: #255 (problems activating newly-registered users).
  • Internal cleanups.

Version 0.9.23 (2014-04-17)

Note

Supervisor configuration has changed. Please update your configuration file to match the example.

  • Redis is now a required dependency; memcached is no longer required.
  • Statistics are computed in a background task (#214).
  • Untappd: Foursquare venue is attached to checkins when available (#178).
  • Foursquare: Photos are attached to checkins when available (#143).
  • Improved support for unicode characters (#225).
  • New commands: kegbot run_all and kegbot run_workers.
  • SQLite is no longer recommended for new installs.
  • Added worker status dashboard.

Version 0.9.22 (2014-04-07)

  • Security: Fix issue #243.
  • API: Support meter and toggle assignment.

Version 0.9.21 (2014-04-04)

  • Supervisor commands have changed; please update your configuration.
  • Twitter: Fix issue #232 (image upload failure).
  • Twitter: Fix issue #231 (guest tweet setting not respected).
  • API: Fix issue #233 (drink list error on empty system).
  • Bugfix: #234 (email misconfiguration causing server errors).

Version 0.9.20 (2014-03-27)

  • Security: Fix issue #230.

Version 0.9.19 (2014-03-26)

  • Twitter plugin: A new setting gives control over whether pictures are attached to tweets.
  • API: Taps can be looked up by ID instead of meter name.
  • Bugfix: Fixed an issue that caused registrations to fail when e-mail was not properly configured.
  • Untappd: Checkins are attempted for all pours.
  • Bugfix: Password reset e-mails.

Version 0.9.18 (2014-03-17)

  • These order in taps are listed can be changed.
  • Bugfix: Fixed an issue that broke kegbot upgrade on systems which already had a user named “guest”

Version 0.9.17 (2014-03-08)

  • Many improvements to the admin interface.
  • The Django database admin is now disabled by default; set KEGBOT_ENABLE_ADMIN = True in local_settings to re-enable.
  • Registration via the API sends an activation e-mail and does not require a password to be set.
  • A new site setting, “Check for updates”, can be used to disable the dashboard update check.
  • Kegs can be created and managed without tapping them.
  • Pre-defined keg sizes are now stored as the keg’s “shell type”; a keg’s initial volume can be different from that type’s default.
  • Internal: Controllers and flow meters are now first-class objects.
  • Internal: Migrated to Django custom user model.
  • Internal: Better support for non-beer beverage types.
  • Internal: Anonymous pours are now assigned to the virtual user “guest”.
  • Bug fix: Issues with migrating on MySQL with v0.9.16.
  • Bug fix: Password reset.
  • Bug fix: Plugin account linking.
  • Updated command for launching Celery in kegbot-supervisor.conf.

Version 0.9.16 (2014-01-13)

  • E-mail notification support (see docs).
  • Bugfixes in Twitter and Untappd plugins.
  • Updated to Django 1.6.1.

Version 0.9.15 (2013-12-17)

  • Webhooks now get single events (backwards-incompatible change).
  • Updated Celery integration.
  • Bug fix: #154 (Twitter keg events not firing).

Version 0.9.14 (2013-12-16)

  • Pour images will be loaded lazily in the browser.
  • Webhook support moved to plugin.

Version 0.9.13 (2013-09-09)

  • Deleting the last drink in a session will delete the session.
  • Bug fixes: #146, #147, #150.

Version 0.9.12 (2013-08-01)

  • Site timezone can be changed in the admin panel.
  • Site hostname should be specified in the admin panel.
  • Plugins: Twitter, Foursquare, and Untappd support have been moved into a new plugin model. These features must be re-activated through the Kegadmin and Account web interfaces; previous configuration will not be migrated.
  • The default SF800 calibration factor has been changed to 0.185185185185. You may need to adjust your taps manually.

Version 0.9.11 (2013-07-01)

  • Home page and session page redesigned to show more photos.
  • Drinks can now be cancelled, modified, and re-assigned in the web interface.
  • Multiple web hook URLs may be given.
  • New admin interfaces for authentication tokens and beer types.
  • Statistics are regenerated more quickly.
  • New generational caching mechanism; many API responses benefit.
  • Improved automatic support for django-debug-toolbar.
  • Keg full and served volume is now persistently maintained (rather than dervied from drink logs)

Version 0.9.10 (2013-05-27)

  • Fixed issue #127 (bug assigning a token)
  • Fixed issue #128 (bug while ending a keg)

Version 0.9.9 (2013-05-14)

Note

Android app versions earlier than 1.0.0 beta 39 are not compatible with this release.

  • Security: Fixed issue #124 (some API endpoints remained exposed despite members-only privacy mode)
  • Drinks can now be canceled in the kegadmin dashboard.
  • kegbot-admin.py has been renamed kegbot. It’s cleaner.
  • Virgin systems no longer show the “sessions” tab, since there aren’t any.
  • Fixed issue #122 (staff-only privacy mode causing an error).
  • Fixed issue #120 (error during setup wizard).

Version 0.9.8 (2013-04-06)

  • Python 2.7 and Django 1.5 are now required.
  • Sessions are now exposed in the top navbar, and are listed by year, month, and day.
  • Miscellaneous visual improvements.
  • Untappd API v4 is supported (thanks pmppk).
  • Many enhancements to the admin dashboard.
  • API support for starting and ending kegs.

Note

If you are upgrading from an older version of Kegbot, run the following command after kb_upgrade:

$ kegbot-admin.py kb_migrate_times

Version 0.9.7 (2013-01-10)

Note

This update requires a schema migration. See Upgrade from a Previous Version.

  • New tool: setup-kegbot.py, to assist with first-time setup.
  • New web-based setup wizard, for finishing first-time setup.

Version 0.9.6 (2012-12-30)

  • Fixed a bug breaking Twitter checkins.

Version 0.9.5 (2012-12-30)

  • A new admin tab shows recent server error logs.
  • Pillow is now used instead of PIL.

Version 0.9.4 (2012-11-20)

  • Fixed bug 86 (“brewer matching query does not exist”)
  • Gunicorn is now included as a dependency.
  • Scripts and instructions for using with Gunicorn, Nginx, and supervisord.

Version 0.9.3 (2012-11-02)

  • Uploaded images are converted to JPEG instead of PNG.
  • Account registration links are more prominent.
  • Site settings allow you to enable/disable web registration and e-mail confirmation.

Version 0.9.2 (2012-07-05)

Security

  • A regression first introduced in v0.9.0 caused the API’s api_key check to fail on some requests. It has been fixed.

General

Version 0.9.1 (2012-07-04)

General

Kegweb

  • Site-wide privacy can now be set in the admin console (public, members only, closed).
  • A default drinker can be specified for automatic authentication (instead of crediting the guest account); useful for single user systems.
  • The guest account name and image can be adjusted.
  • Fixed a bug which caused the tap form to be cleared after editing.
  • Several aesthetic improvements.

Version 0.9.0 (2012-06-21)

Upgrade Notes

Note: Due to changes in the Kegbot core, you must run the following commands after updating:

$ kegbot-admin.py migrate
$ kegbot-admin.py kb_regen_stats

Note: The file common_settings.py has been renamed to local_settings.py. The old name is still supported, but will produce a warning. Please move it.

Note: If you are updating from git, please remove the “bootstrap” entry from .git/config, and rm -rf pykeg/web/static/bootstrap prior to running git pull.

Core/General

  • Made several modules optional: Celery, Tornado, Sentry, and django-debug-toolbar.
  • API and database column name changes.

Kegweb

  • Improvements to AJAX auto-refresh.
  • Kegweb’s JavaScript is now written in CoffeScript.
  • Some visual changes.

Version 0.8.5 (2012-05-13)

Upgrade Notes

Twitter and Facebook support has been changed. Any existing Twitter/Facebook connections will be lost.

Important: Please run the following commands to delete the old Twitter/Facebook support prior to upgrading:

$ kegbot-admin.py migrate contrib.twitter zero

Note: Due to changes in the Kegbot core, you must run the following commands after updating:

$ kegbot-admin.py migrate

Note: To post tweets, you must run the celery daemon:

$ kegbot-admin.py celeryd --loglevel=INFO

Core/General

  • Django 1.4 support.
  • Foursquare, Twitter and Untappd support.
  • Kegboard has moved to a new repository: https://github.com/Kegbot/kegboard
  • Session timeout is now configurable on the Kegadmin page.
  • Improvements to error logging.

Kegweb

  • Various aesthetic improvements.
  • You can now link a Google Analytics account.
  • Taps can be created and deleted using Kegadmin.

Version 0.8.4 (2011-12-30)

Core/General

  • Several improvements to stats handling.
  • kegbot_core local backend is officially deprecated.
  • Web hook support: post event details to an arbitrary URL after a pour.

Kegweb

  • Major improvements to the Kegweb look-and-feel.
  • Added Bootstrap and rewrote kegweb css in lesscss.
  • Units can now be displayed in metric.
  • Kegadmin improvements: tap settings are editable, add taps.

Version 0.8.3 (2011-08-09)

Core/General

  • Fix a temperature recording bug that appeared in v0.8.2.

Version 0.8.2 (2011-08-05)

Note: Due to changes in the Kegbot core, you must run the following commands after updating:

$ kegbot-admin.py migrate
$ kegbot-admin.py createcachetable cache

Core/General

  • Pictures can be attached to drinks.
  • Better support for ID-12 RFID tokens.

API

  • Added an endpoint for session statis.
  • Fixed ABV return value.
  • Return more detail on the kegs list endpoint.

Kegweb

  • Added support for displaying measurements in metric units.
  • Updated to use django staticfiles module.

Kegboard

  • Added support for magstrip readers.

Version 0.8.1 (2011-06-13)

Note: If you installed version 0.8.0 and find your api_key unusable, you need to regenerate it. Log in and click the “regenerate api key” button on your account page.

API

  • Fixed incorrect API key generation affecting some users.

Kegboard

  • Updated to firmware version 9, expanding support for set_output and adding support for ID-12 RFID readers.

Kegweb

  • Added “regenerate API key” button.

Version 0.8.0 (2011-06-12)

Note: Due to changes in the Kegbot core, you must run the following commands after updating:

$ kegbot-admin.py migrate
$ kegbot-admin.py kb_regen_events

Core/General

  • Support for per-tap relay control (solenoid valve control for authenticated users.)
  • kegbot_core.py now uses the RESTful web API backend interface by default.
  • Kegbot daemons now perform automatic log rotation, every night at midnight.
  • When executed with --verbose, daemons now show less spam.
  • The drink “endtime” column has been removed (not user-visible).
  • Flag names have changed; --api_url and --api_key now control the base API url and the API access key for any program which uses the Kegbot Web API.
  • The “soundserver” application has been improved and once again works. Yay.
  • Each keg record now has a “spilled” volume counter. This can be used to store the total amount of wasted or lost beverage which is not associated with a drink record.
  • When running kegbot-admin, PYTHONPATH now has higher precedence than /etc/kegbot and ~/.kegbot. This makes it possible to provide an alternate location for common_settings.py. (If the preceding was nonsense to you, you are normal..)
  • Django 1.3 is now supported.

Kegweb

  • The account page for a logged-in admin now displays the API key for that user.
  • Various CSS changes and aesthetic tweaks.
  • System events are shown on the Kegweb main page.
  • Automatic AJAX refresh of drinks (and now events) on the main page has been improved.
  • Session detail pages show individual pours from that session.
  • Session detail pages show the total number of authenticated drinkers. (Guest/anonymous pours do not contribute to this count.)
  • Fixed a bug where previous keg was not being marked offline after a keg change.
  • The values in the pints-per-session histogram are now less ambiguous.
  • The background image is now included in version control, and could be replaced locally.
  • Beer type images rendering has been cleaned up.

API

  • API keys are now calculated differently. As a result, previously-used API keys are invalid. To determine your API key, visit /account/ while logged in as an admin user.
  • System events are now exposed in the web api.
  • Sessions are now exposed in the web api.
  • Date/time fields reported in the web api are now always expressed in UTC, regardless of the system/Django time zone.

Version 0.7.8 (2010-12-01)

Note: Due to changes in the Kegbot core, you must run the following commands after updating:

$ kegbot-admin.py migrate
$ kegbot-admin.py kb_regen_stats

Note: If you have installed using ./setup.py develop, you will need to issue that command again; new versions of some dependencies are required.

Core/General

  • Added SystemStats table.
  • Now requires the pytz module; use pip install pytz to install.
  • System, keg, session, and drinker statistics are now recalculated quickly after every pour.

Kegweb

  • Added slightly more info to the “all-time stats” page.
  • Used cached stats on the “all-time stats” page, making it more responsive.
  • Fixed the AJAX auto-update of the drink list on the homepage.
  • Fixed a crash in the LCD daemon, encountered when an active tap did not have a temperature sensor assigned to it.
  • Fixed a crash on the keg admin page.
  • Fixed a regression introduced in v0.7.6 that caused kegweb to crash when a chart could not be displayed; the chart is once again replaced with a descriptive error message.
  • Fixed “known drinkers” statistic on the keg detail page.
  • Set time zone UTC offset in ISO8601-formatted timestamps. This fixes an issue where drinks appear to be poured in the future when the local timezone is behind the server timezone.

Version 0.7.7 (2010-11-28)

Note: This is a quick patch release to v0.7.6. See changelog for v0.7.6 for major changes.

Core/General

  • Fixes a bug discovered with stats generation in v0.7.6.

Version 0.7.6 (2010-11-28)

Note: An update to the kegboard firmware is included in this version. Reflashing your kegboard is recommended.

Note: It is recommended that you rebuild all session and statistical data after updating to this version:

$ kegbot-admin.py kb_regen_sessions
$ kegbot-admin.py kb_regen_stats
$ kegbot-admin.py kb_regen_events

Core/General

  • Improved token handling, resolving multiple bugs related to token timeouts and multi-tap authentication.
  • Added SessionStats table. Statistics are now continuously computed for drinking sessions, to go along with per-user and per-keg stats.
  • Removed protobuf dependency.
  • rfid_daemon: added --toggle_output option, to enable the external output whenever an ID is present.
  • LCD daemon improvements.

Kegweb

  • Sessions can now be assigned a title, and have descriptive permalinks.
  • Sessions are now prominently featured on Kegweb pages. Various improvements to session display.
  • Replaced Google image charts with javascript/SVG Highcharts package.
  • Various bugfixes to the web API.
  • Added an example WSGI configuration file.

Kegboard

  • Improved stability in kegboard_daemon when malformed or unknown messages are received.
  • Added the auth-token-message type to the serial protocol.
  • Fixed reporting for negative temperatures.
  • Fixed kegboard reader/daemon to not crash when EAGAIN is received from the OS.
  • Update Makefiles.

Version 0.7.5 (2010-09-11)

Note: Due to changes to the third-party socialregistration dependency, existing users will need to issue the following command after updating:

$ kegbot-admin.py migrate --fake socialregistration 0001
$ kegbot-admin.py migrate

Note: If you have installed using ./setup.py develop, you will need to issue that command again; new versions of some dependencies are required.

Core / General

  • Fixed a race condition which could cause the kegbot core to crash due to an erroneous watchdog error.
  • Fixed a crash in kegbot_admin.py kb_regen_stats that would occur when computing stats for a keg with no recorded drinks. (The workaround was to go have a beer..)
  • Fixed issue #50 (do not record drinks below minimum volume threshold.)

Kegweb

  • Updated to use django-socialregistration version 0.4.2, and the official facebook-python-sdk package. Removed mirror of pyfacebook.
  • The number of recent pours shown on the main page is now configurable. See KEGWEB_LAST_DRINK_COUNT in common_settings.py.example

Version 0.7.4 (2010-09-08)

Core / General

  • Backend: extensive under-the-hood changes to support multiple sites in a single backend instance. This isn’t yet used by anything.
  • Fixed issue with pykeg.core migration 0031.
  • Improvements to session record keeping.
  • Added new SystemEvent table.

Kegweb

  • Improved keg detail page, with better-looking sessions.

Version 0.7.3 (2010-09-01)

Note: Existing users upgrading from a previous kegbot version will need to issue the migrate command to update their database schema. Also, statistics and sessions need to be regenerated:

$ kegbot_admin.py migrate
$ kegbot_admin.py kb_regen_sessions
$ kegbot_admin.py kb_regen_stats

Core / General

  • Fixed issue authentication tokens for consecutive pours not being reported correctly.
  • Improved stats reporting; fixed drinker breakdown graph on keg detail page.
  • Added a notes field for Keg records.
  • Internal cleanups to the backend APIs.
  • Schema change: Started record auth token details used for each pour.
  • Schema change: Guest pours are now represented by a null user (rather than a specific guest account) in the database.

Kegweb

  • Fixed issue causing kegweb to break when used without proper Facebook credentials.
  • Improvements to the currently undocumented kegweb API.

Kegboard

  • Update KegShield schematics to include Arduino and Arduino Mega shield designs.

Version 0.7.2 (2010-06-29)

Core / General

  • Django v1.2 is now required.
  • Added new dependency on django_nose for running unittests; make test works once again to run unittests
  • Improved LCD UI; now shows tap status, last pour information.
  • Fixed SoundServer, which had stopped working some time ago.
  • Miscellaneous packaging fixes, which should make installation with pip work a bit better.

Kegweb

  • Fix for bug #48: Facebook connect login broken.
  • Fixed/update CSRF detection on forms for Django 1.2.
  • Bugfixes for the Kegweb REST (‘krest’) API.

Twitter

  • Moved Twitter add-on out of the core and into a new daemon, kegbot_twitter, similar to Facebook app fb_publisher.

Version 0.7.1 (2010-06-04)

Core / General

  • Added missing dependencies to setup.py.
  • Removed a few locally-mirrored dependencies.
  • Added protobuf source mirror to setup.py.

Kegweb

  • Reorganized account settings views.
  • Add password reset forms.

Version 0.7.0 (2010-05-23)

Initial numbered release! (Changes are since hg revision 500:525e06329039).

Core / General

  • Vastly improved authentication device support.
  • New network protocol for Kegbot status and control (kegnet).
  • Temperatures are once again recorded. Temperature sensors can be associated with a specific keg tap.
  • Support for Phidgets RFID reader.
  • Flowmeter resolution is now set on a tap-by-tap basis (in KegTap table).
  • Twitter: added config option to suppress tweets for unknown users.
  • Started using django-south for schema migrations.
  • Sound playback on flow events: added the sound_server application.
  • Added kegbot_master program, to control and monitor full suite of kegbot daemons.
  • Improved support for CrystalFontz LCD devices; new support for Matrix-Orbital serial LCD displays.
  • Added Facebook publisher add-on.
  • Packaging improvements; setup.py install works.

Kegboard

  • Bumped firmware version to v5.
  • Fixed packet CRCs.
  • Added support for OneWire presence detect/authentication device.
  • Improved DS1820 temperature sensing.
  • Improved responsiveness of OneWire presence detect.
  • Shrunk size of firmware significantly.
  • Added experimental support for serial LCDs.
  • Added schematic files for Kegboard Arduino shield.

Kegweb

  • Design refresh; new HTML/CSS and many more graphs and stats.
  • Added keg administration tab.
  • Added experimental support for Facebook connect.
  • Fixed broken relative time display.
  • Fixed bug on submitting new user registration.

Docs

  • Improved documentation.
  • Added changelog :)