Upgrade notes
- Make sure to update the adjustment request email in Customization -> File & email templates with this one
- Support for python 3.9 has been removed (end of life)
- In
settings.pyyou can removedjango_jsonformfromINSTALLED_APPSsince it is no longer needed - The python version in the docker container has been updated to python 3.13 (make sure to update the volume paths in docker-compose.yml if you are overriding files in the container)
- Plugins can now make use of the new
NEMO_POLICY_CLASSESinsettings.pywhich allows multiple policies. They have to all be OK for each method (save reservation, enable tool etc.) to be allowed
New features
- Added Account managers for accounts, who can see usage across all the projects under their managed accounts. Also added an option to email all account managers. Thanks
UPenn Singh Centerfor the contribution! - Users can now pick their landing page if they want to go directly to the Calendar or Tool control (and bypass the dashboard). This can be done in their preferences. Clicking on the "NEMO" link at the top left of the menu bar will always take them to the dashboard. Thanks
UPenn Singh Centerfor the contribution! - Added consumable checkout to the Kiosk (it needs to be enabled in Customization -> Application). Thanks
Stanford SNFfor the contribution! - Tool usage questions are now in a separate
Tool usage questionspart of Detailed administration. They can now be used with specific projects, groups, users, and can be set for multiple tools at once - Added a way for users to make their own custom tool lists in the calendar
- Added a reservation note which can be added on calendar reservation events. Thanks
Stanford SNFandMichigan Lurie Nanofabrication Facilityfor the contribution! - Added option in Customization -> Tool to allow tool usage note to be set. If enabled, the reservation note can be automatically copied into the usage note. The usage note can be set/updated before turning on the tool and before turning off the tool
- Added supervisor <-> managed users relationship, allowing to set managed users for a supervisor and allowing them to see the usage of all their managed users
- Added a
required area occupancy minimumin tools to prevent tool engagement unless there are at least that many people logged in the area. ThanksMIT.nanofor the contribution!
Improvements
- Added charge number and table search in transfer charges page. Thanks
UPenn Singh Centerfor the contribution! - Updated the method to safely initialize queryset during startup to not throw exception on missing tables
- Added new "manager edit mode" (which needs to be turned on in Customizations -> Accounts and projects) to allow adding/removing project and account managers on the accounts and project page
- Added
usage_eventvariable to required unanswered email template. ThanksStanford SNFfor the contribution! - Added a
notefield to accounts. ThanksUSC Nanofabfor the contribution! - Optimized loading time for
My usageandUserpages - Optimized general loading time everywhere by caching Customizations
- Added readonly primary owner on tools field in Detailed administration -> Users
- Added reservation abuse weight to tool and area configuration to allow giving more weight to some tools/areas in the abuse calculations. Thanks
MIT.nanofor the contribution! - The Kiosk URL now allows
category=<category_name>andtool=<tool_name>(both parameters can be chained multiple times). ThanksMIT.nanofor the contribution! - The Kiosk URL now supports
virtual_inputs=falseto disable virtual inputs (virtual keyboard) by kiosk. ThanksMIT.nanofor the contribution! - All request parameters will now be passed from
welcome_screenandfarewell_screenURLs to the kiosk if the Kiosk button is enabled. ThanksMIT.nanofor the contribution! - Both
welcome_screenandfarewell_screencan show alerts and usage by addingusageandalertsparameters in the URL - New UI for adjustment requests that should make it easier to filter and organize them. It also provides a major load time boost. Thanks
UPenn Singh Centerfor the contribution! - Users can now make an adjustment request to have the charge moved to a different project. Adjustment requests now keep track of original charge data (in case you want it reverted after applying a change). Thanks
Michigan Lurie Nanofabrication FacilityandCornell NanoScale Facilityfor the contribution! - Added option to only enable adjustment requests for reviewers (regular users won't be able to create new ones). Thanks
Michigan Lurie Nanofabrication Facilityfor the contribution! - Added option in Customization -> Adjustment requests to allow adjustments until a certain day each month (billing day). Thanks
Stanford SNFandMIT.nanofor the contribution! - Updated user profile view by adding tools they are reviewers on, managed accounts, managed projects, managed users and supervisors.
- Added
usage,occupancyandalertsparameters to Jumbotron URL to customize sections displayed. If parameters are false, that section won't be shown. ThanksUPenn Singh Centerfor the contribution! - Jumbotron tables will automatically scroll when the data overflows. Thanks
UPenn Singh Centerfor the contribution! - Added staff charge note to usage export. Thanks
Stanford SNFfor the contribution! - Tool comments can now be visible for x number of days (999 days max)
- Added option in Customization -> Tool to allow changing tool configuration while the tool is in use. Thanks
Stanford SNFfor the contribution! - Added option in Customization -> User to decide whether new users should be active or inactive by default when creating them
- Removed dependency on django-jsonform for tool properties (using our own widget now)
- Added options for default reminder days and whether users should receive the reminders at all in Customization -> Recurring charges. Thanks
MIT.nanofor the contribution! - Detailed administration actions now follow django permissions (so someone without add permission cannot use the
duplicate tool configurationaction for example). ThanksMIT.nanofor the contribution! - In Detailed administration -> Tools, added option to enable shutting down a tool when reporting a problem.
- Added option to customize the banner displayed on the dashboard when Facility rules tutorial is needed (in Customization -> Application) and to customize the
Facility rules tutorialname itself - When a reservation title or reservation note is updated, a calendar invite will be sent as well. Thanks
MIT.nanofor the contribution! - Added consumable category filters and invalid filter in Recurring charges. Thanks
MIT.nanofor the contribution! - Added option when staff are reporting a tool problem to not lock the tool (only displayed if the tool does have an interlock). Thanks
MIT.nanofor the contribution!
API
- Added filters by consumable name in consumables endpoint
- API Upload file is now under the
Raw datatab and will output the content in the main text area - Added
user_calendar_tool_listsendpoint - Added
membership_historyendpoint. ThanksMIT.nanofor the contribution! - Tool usage questions are now available at
/api/tool_usage_questions/instead of/api/tools/
Bug fixes
- Fixed configuration changes not being saved on the kiosk
- Fixed issues in user form when the validation would refer to the is_staff field that doesn't exist in the regular GUI page in NEMO
- Fixed wrong method signature causing the interlock report to fail for ProXR interlocks
- Fixed the application identifier search not working in the project billing page
- Fixed a bug with creating reservations on behalf of another user which would not ask for the project
- Fixed a bug when using a tool for training did not correctly show the record training page after disabling the tool
Libraries
- bootstrap-datetimepicker.js 4.17.43 -> 4.17.49
- cryptography 45.0.4 -> 46.0.3
- Django 4.2.26 -> 4.2.27
- django-auditlog 3.2.0 -> 3.4.1
- django-mptt 0.14.0 -> 0.18.0
- djangorestframework 3.16.0 -> 3.16.1
- packaging 24.2 -> 25.0
- Pillow 11.2.1 -> 12.0.0
- requests 2.32.3 -> 2.32.5
- pymodbus 3.8.6 -> 3.11.4