- In previous implementation, could not have a value "10k" for a unit of "m"
- Now, correct result is obtained (10k [m] = 10[km])
- Still passes all previous unit tests
- Simpler code, too
* Add 'is_installed' property to PluginConfig model
- Allow us to show users which plugins are "outdated"
* Cleanup plugin table
- Display clearly if a plugin is no longer installed
* Fixes for plugin table
* Revert change due to failing CI
* Fix for plugin installation via web interface
- Previous implementation did not correctly catch error output
- Refactored into new file plugin.installer.py
- Provides better "output" when plugin does install correctly
* Remove unnecessary debug output
* Update unit test
* Remove placeholder code
* Improve management of primary address for a company
- Simplify approach (remove "confirm_primary" field)
- Remove @receiver hook
- Move all logic into Address.save() method
* Make address primary if it is the only one defined for a company
* Update frontend table
* Fix saving logic
* Actually fix it this time
* Fix for unit test
* Another test fix
* Annotate available variant stock to SalesOrderLine serializer
* Filter variant stock by:
- active = True
- salable = True
* Add 'salable' filter to StockList API
* Filter available stock in sales order table:
- Must be salable
- Must be active
* Update table display
* Bump API version
* 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
* Add skeleton for builtin label printing plugin
* Force selection of plugin when printing labels
* Enhance LabelPrintingMixin class
- Add render_to_pdf method
- Add render_to_html method
* Enhance plugin mixin
- Add class attribute to select blocking or non-blocking printing
- Add render_to_png method
- Add default method for printing multiple labels
- Add method for offloding print job
* Simplify print_label background function
- All arguments now handled by specific plugin
* Simplify label printing API
- Simply pass data to the particular plugin
- Check result type
- Return result
* Updated sample plugin
* Working on client side code
* Cleanup
* Update sample plugin
* Add new model type
- LabelOutput model
- Stores generated label file to the database
- Makes available for download
* Update label printing plugin mixin
* Add background task to remove any old label outputs
* Open file if response contains filename
* Remove "default printer" option which does not specify a plugin
* Delete old labels after 5 days
* Remove debug statements
* Update API version
* Changed default behaviour to background printing
* Update label plugin mixin docs
* Provide default printer if none provided (legacy)
* Update unit test
* unit test updates
* Further fixes for unit tests
* unit test updates
* Hide protected setting in settings view
* Implement custom serializer for setting value
- Return '***' if the setting is protected
* Implement to_internal_value
* Stringify
* Add protected setting to sample plugin
* Unit tests for plugin settings API
* Update unit test
* Add 'location' filtering option for part.stock_entries
* Add "exclude_external" field to stocktake report
* Add "stocktake_exclude_external" default option
* Implement setting to exclude external stock
* Split stocktake functionality out into separate file
* Change name of internal setting
* Refactoring
* Add 'exclude_external' field to stocktake form
* Fix part tables on index page
- Stop table filters overriding each other
* Refactor "needed for build" table
- Now shows amount actually needed
* Fix typo
* js fix
* linting
* Fix warning messages on index page
* js linting
* Add generic implementation for barcode actions
- Commonize code against tables
- Cleaner UI
- Better code
- Will make future react refactor easier
* Add permissions.js
- Separate .js file for dynamically checking permissions
* Update stock table to use client-side actions
* API endpoint for bulk category adjustment
* Bug fix for purchase_order.js
- Prevent some really strange API calls
* Refactor actions for part table
- Now done dynamically
* Refactor actions for the attachment tables
* Refactor actions for build output table
* Increment API version
* Cleanup janky button
* Refactor supplier part table
* Refactor manufacturer part table
* Remove linkButtonsToSelection
- no longer needed
- Cleanup, yay!
* Cleanup purchase order line table
* Refactor BOM table buttons
* JS linting
* Further cleanup
* Template cleanup
- remove extra div elements
* js linting
* js fix
* Add API endpoint for changing stock item status
- Change status for multiple items simultaneously
- Reduce number of database queries required
* Perform bulk update in serializer
* Update 'updated' field
* Add front-end code
* Bump API version
* Bug fix and unit test
* Add initial model structure
* Initial Address model defined
* Add migration and unit tests
* Initial migration for Address model generated
* Unit tests for Address model added
* Move address field to new model
* Added migration to move address field to Address model
* Implement address feature to backend
* API endpoints for list and detail implemented
* Serializer class for Address implemented
* Final migration to delete old address field from company added
* Tests for API and migrations added
* Amend migration file names
* Fix migration names in test
* Add address property to company model
* Iinital view and JS code
* Fix indents
* Fix different things
* Pre-emptive change before merge
* Post-merge fixes
* dotdotdot...
* ...
* iDots
* .
* .
* .
* Add form functionality and model checks
* Forms require a confirmation slider to be checked to submit
if address is selected as primary
* Backend resets primary address before saving if new address
is designated as primary
* Fix pre-save logic to enforce primary uniqueness
* Fix typos
* Sort out migrations
* Forgot one
* Add admin entry and small fixes
* Fix migration file name and dependency
* Update InvenTree/company/models.py
Co-authored-by: Matthias Mair <code@mjmair.com>
* Update InvenTree/company/models.py
Co-authored-by: Matthias Mair <code@mjmair.com>
* Correct final issues
* .
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* remove STOCK_RECENT_COUNT parameter
- Now "recent" is set by date
- Tables are paginated by the server
* Display total row count
* remove PART_RECENT_COUNT
- Replace with date filter
- Update Part.api
* Bump API version
* Adds BuildLineLabel model
- New type of label for printing against BuildLine objects
* Add serializer for new model
* Add API endpoints for new label type
* Add hooks to BuildLine table
* Create default label
- Create an example BuildLineLabel object
* Add admin integration
* Fix js code
* Use two-tiered template
- Allows base template to be updated
* Improve default label
* Add docs pages for labels
* Update nav
* Documentation for new label
* Add permission role
* Bump API version