Skip to main content

· 5 min read
Oliver Walters

The InvenTree team is very excited to announce the InvenTree 0.9.0 Stable Release!

This release is the culmination of many hours of work from multiple developers, providing numerous new features and bug fixes. We extend our thanks to the contributors who have helped on this release, as well as the users who have suggested new features or helped us track down outstanding software issues.

New Features

The 0.9.0 release introduces many new features - some of the major ones are outlined briefly below:

Installer

We now have a packaged command-line installer for simplified setup (on supported platforms), using the packager.io service. The installer is targetted for users who are installing InvenTree on a bare metal system (separate installers are available for container environments).

You can find more information about the installer at docs.inventree.org.

Backup and Restore

Database backup and restore functionality has been improved, using the dbbackup library. A backup of database records (and uploaded media files) can be performed with a simple command line action. Backup can also be configured to occur periodically, serviced by the background worker.

Pricing Overhaul

This release provides a major overhaul for how pricing data is managed. The new pricing system calculates various pricing information (such as BOM cost or purchase price range) and caches this data in the database. This means that the efficiency of accessing pricing data in real time is greatly improved. For complex bills of material, viewing pricing data was (before this update) extremely prohibitive, due to the recursive calculations which were being performed "on the fly". The new achitecture makes use of the background worker to recalculate pricing information whenever the underlying data changes, ensuring that "up to date" pricing is readily available.

BOM Pricing

Additionally, more options for controlling how pricing information is calculated and handled have been implemented.

You can read more about managing pricing data in InvenTree at docs.inventree.org.

Barcode Refactor

Barcode support has been significantly improved, allowing custom barcode functionality for a greater range of database model types, and simplifying the API.

  • Custom barcodes can now be assigned to Part instances
  • Custom barcodes can now be assigned to Stock Location instances
  • Custom barcodes can now be assigned to Supplier Part instances

Read more about the updated barcode support in the InvenTree documentation.

Builtin Plugins

As part of the ongoing improvements to the plugin system, InvenTree now features a number of "builtin" plugins. These plugins are always active (even if custom plugin support is disabled for the server) and provide core InvenTree functionality in a way which aligns with the operation of the plugin system. This is intended to streamline the way in which plugins are implemented, as core components of the code are now offloaded to the plugin with a simpler interface.

We have also made some significant improvements to the plugin system documentation.

Validation Plugins

A completely new type of plugin introduced in this release is the validation plugin mixin. This plugin allows users to implement custom validation methods for various database fields. In addition to allowing validation of field values against complex custom rules, this plugin allows automated generation of the "next value" for certain fields, such as serial numbers and batch codes.

News Reader

Now that the new website is live, a news feed is available. If enabled, news about InvenTree can be displayed in the InvenTree dashboard.

Note that this feature is disabled by default, and must be enabled by a staff user

News Reader

Part Scheduling

The Part Scheduling functionality has received some updates in this release. If enabled, the Part Scheduling tab shows predicted future stock levels, based on incoming and outgoing orders.

Supplier Part Pack Size

A major improvement to the way supplier parts are handled is the addition of "pack size" for supplier parts. While internally, parts are represented using "unit quantity", they can be sourced from suppliers in larger pack quantities. Pack sizing is also taken into quantity when calculating unit pricing.

Data Sanitization

A number of security related changes have been implemented, providing multiple improvements related to input data sanitization. Some of these updates include:

  • Remove invisible ASCII and unicode characters from user submitted data
  • Sanitize uploaded SVG files
  • Remove malicious HTML from form fields

More generally, a number of security fixes have been made for this release, following vulnerability reports received from the InvenTree community. You can view information on all our security advisory notices on GitHub.

Customizing

Further customization of InvenTree is now available, with custom splash screens and application icons supported in this release.

Bug Fixes

In addition to many new features, this release also provides fixes for a number of bugs, of varying severity! Refer to the release notes for further information.

Release Notes

This list covers only a fraction of the exciting new features. You can view the full release notes on our GitHub page.

· 3 min read
Oliver Walters

How we provide translation support for InvenTree in multiple languages

Community Contributed Translations

At the time of writing, InvenTree provides language translations for 25 languages (in addition to English), with over 11,000 translated words! This is thanks to the sustained efforts of 130+ InvenTree users, who have contributed their time to make our software better for everyone.

Translation progress can be viewed on our Crowdin project page. Here you can view the current status of the translation efforts:

Translation

Translation Pipeline

As translations are entirely community contributed, we need a software framework that allows non-technical users to submit and proofread translations, and a way to bring those translations back into the InvenTree software.

Backend - Django

At its core, InvenTree is built on the Django framework, which provides a translation framework "out of the box".

The Django translation framework provides a toolkit for marking certain text strings as "translatable". Translation strings are able to be replaced by a translated string from a language specified by the user - if a translation for the text is available in that language.

There are many files within the InvenTree project which can provide these translation strings:

  • Python source files
  • Javascript source files
  • HTML template files

Additionally, translation support is provided for the InvenTree mobile app.

Exporting Translations - GitHub

On every commit to the InvenTree main branch, the source code is analyzed to discover and extract translation strings. This information is then pushed to a separate code branch, which is monitored by the translation service

Community Translation - Crowdin

The crucial piece of the puzzle is the integration with Crowdin - an online translation service which provides community contributed translation, and supports open source projects.

Crowdin monitors the InvenTree GitHub repository for any changes to translation files, and provides a user interface for translators to suggest appropriate translated strings.

Suggested translations are then approved (again, by the InvenTree user community), and periodically pushed back to the InvenTree GitHub repo.

Merging Translations - GitHub

Updated translated strings are periodically merged back into the main code branch, keeping the InvenTree code base up to date.

Contributing

The translation framework is provided by the InvenTree team to make our software more useful and appealing to a greater number of people. The entire translation effort is driven by the InvenTree community. Any contributions, no matter how large or small, are greatly encouraged!

If you would like to see improved translations in a particular language, read the contribution guide! The InvenTree project benefits greatly from your efforts, and you get a great piece of open source software in your native language.

Adding New Languages

If you would like to see support for a new language, raise an issue on our GitHub page.