Major new features
- Created the NEMO "Splash Pad" for trying out NEMO
- Zero configuration required
- Comes preloaded with sample data
- Resource outages can now be scheduled, from the Administration menu > Resources > click the link "schedule resource outages"
- Once a resource outage is created, it can be modified or deleted on the tool calendar, or from the "Schedule resource outage" page
- Outages will not cause reservations that are coincident to be marked as 'missed'
- "Tool time binning" was added, allowing staff to designate the "task status" of a tool while it's down for maintenance.
- Task Statuses are defined by the NEMO administrator - they could be anything you want... for example
- Parts on order
- Down for calibration
- Repaired and awaiting qualification
- When a task status is changed, that gets recorded as a "Task History" entry. This allows someone to look over the history of all tasks, and analyze trends or identify problems with why a tool is down often
- Task Statuses are defined by the NEMO administrator - they could be anything you want... for example
- Added a
run_datafield to tool UsageEvent database rows- Allows for custom data to be stored (in JSON) for an individual tool run
- This feature will be expanded in the future to be very customizable
- Added "Post usage questions"
- A Tool can be configured with a JSON data structure
- When a user is done using a tool, they are presented with the questions
- The user's answer get recorded in the
run_datafield of their Usage Event
- Database migrations are now shipped with NEMO
- Thanks to Ryan Goggin (@Goggin) at the University of Waterloo for recommending that migrations be included with the codebase
- Your database should auto-update when you run a newer version of NEMO from the Docker container
- Use
django-admin migrateto update your database manually - Databases that already exist, and used NEMO versions 1.0.0 and 1.1.0 may need to perform the command
django-admin migrate --faketo catch up for migrations
Minor new features
- Added an introduction message on the Resources page when no resources exist
- Added a
visiblefield for Consumables - they are now able to be kept, but hidden. This is useful for keeping history/billing information intact - Kiosk (tool control tablet page) was reworked
- Users can now control all tools rather than just nearby tools
- Post Usage Questions can be completed when a tool is disabled from a Kiosk
- Because the user can now use the keyboard on a Kiosk, the badge readers attached to the Kiosk must be configured to send <F2><badge number as keyboard input><F2>. The F2 "sentinel" identifies that the badge reader is issuing the keystrokes
Stability improvements
- The authentication logic now has better error logging, so it's easier to figure out why/when authentication is not working
- Shortened the time-description for tool usage. Used to be "Monday, January 12th, 2018 @ 2:43 PM", now is "Monday @ 2:43"
- Resource restriction messages can now be blank in the database (for when there's no resource outage)
- Made settings and runtime info path constant inside the Dockerfile. Inside the container,
/nemois where NEMO expectssettings.pyand other information attached to the volume - Resource Categories are now sorted by name (in the database), by default
- Bumped NEMO dependency versions in
setup.pyto incorporate latest improvements - Linted some JavaScript to use
letinstead ofvar, which improves variable scoping - Removed all popups from the Tool Control page - this design decision was due to the addition of the Post Usage Questions feature
Bug fixes
- The authentication logic now uses
@sensitive_post_parametersto mask passwords in NEMO/Django logs - The Resources page now displays uncategorized resources
- Fixed a bug where JavaScript AJAX request parameters were being serialized into an array, instead of single values. This was interfering with creating scheduled outages
- Linted nemo.js for better JS comparison operators
- A title is now required for scheduled tool outages
- Enter no longer submits the form when creating a scheduled tool outage. Previously, enter was causing the form to submit and the main calendar page to reload
- Fixed a bug where Alerts datetimes were not being reflected properly by Django