2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-08-04 11:01:35 +00:00

Add database model for defining custom units (#5268)

* Add database model for defining custom units

- Database model
- DRF serializer
- API endpoints

* Add validation hook

* Custom check for the 'definition' field

* Add settings page for custom units

- Table of units
- Create / edit / delete buttons

* Allow "unit" field to be empty

- Not actually required for custom unit definition

* Load custom unit definitions into global registry

* Docs: add core concepts page(s)

* Add some back links

* Update docs

* Add unit test for custom unit conversion

* More unit testing

* remove print statements

* Add missing table rule
This commit is contained in:
Oliver
2023-07-19 06:24:16 +10:00
committed by GitHub
parent 81e2c2f8fa
commit 6d3978ea28
17 changed files with 458 additions and 25 deletions

View File

@@ -77,13 +77,13 @@ The parametric parts table allows the returned parts to be sorted by particular
## Parameter Units
The *units* field (which is defined against a [parameter template](#parameter-templates)) defines the base unit of that template. Any parameters which are created against that unit *must* be specified in compatible units. Unit conversion is implemented using the [pint](https://pint.readthedocs.io/en/stable/) Python library. This conversion library is used to perform two main functions:
- Enforce use of compatible units when creating part parameters
- Perform conversion to the base template unit
The *units* field (which is defined against a [parameter template](#parameter-templates)) defines the base unit of that template. Any parameters which are created against that unit *must* be specified in compatible units.
The in-built conversion functionality means that parameter values can be input in different dimensions - *as long as the dimension is compatible with the base template units*.
!!! info "Read Mode"
Read more about how InvenTree supports [physical units of measure](../concepts/units.md)
### Incompatible Units
If a part parameter is created with a value which is incompatible with the units specified for the template, it will be rejected:

View File

@@ -81,6 +81,9 @@ By default, all parts are *Active*. Marking a part as inactive means it is not a
Each type of part can define a custom "unit of measure" which is a standardized unit which is used to track quantities for a particular part. By default, the "unit of measure" for each part is blank, which means that each part is tracked in dimensionless quantities of "pieces".
!!! info "Read More"
Read more on how InvenTree supports [physical units of measure](../concepts/units.md)
### Physical Units
It is possible to track parts using physical quantity values, such as *metres* or *litres*. For example, it would make sense to track a "wire" in units of "metres":