* Remove stat context variables
* Revert "Remove stat context variables"
This reverts commit 0989c308d0.
* Allow longer timeout for image download tests
* Create PartStocktake model
Model for representing stocktake entries against any given part
* Admin interface support for new model
* Adds API endpoint for listing stocktake information
* Bump API version
* Enable filtering and ordering for API endpoint
* Add model to permission group
* Add UI hooks for displaying stocktake data for a particular part
* Fix encoded type for 'quantity' field
* Load stocktake table for part
* Add "stocktake" button
* Add "note" field for stocktake
* Add user information when performing stocktake
* First pass at UI elements for performing stocktake
* Add user information to stocktake table
* Auto-calculate quantity based on available stock items
* add stocktake data as tabular inline (admin)
* js linting
* Add indication that a stock item has not been updated recently
* Display last stocktake information on part page
* js style fix
* Test fix for ongoing CI issues
* Add configurable option for controlling default "delete_on_deplete" behaviour
* Add id values to cells
* Hide action buttons (at least for now)
* Adds refresh button to table
* Add API endpoint to delete or edit stocktake entries
* Adds unit test for API list endpoint
* javascript linting
* More unit testing
* Add Part API filter for stocktake
* Add 'last_stocktake' field to Part model
- Gets filled out automatically when a new PartStocktake instance is created
* Update part table to include last_stocktake date
* Add simple unit test
* Fix test
* Support structural part categories
Structural categories cannot have parts assigned (only sub-categories)
Fixed#3897
* Fixed unit test
* Fix Oliver's review comments
* Create new model for storing Part pricing data
Currently this model does not "do" anything but will be used for caching pre-calculated pricing information
* Define function for accessing pricing information for a specific part
* Adds admin site support for new PartPricing model
* Specify role for PartPricing model
* Allow blank values for PartPricing model fields
* Add some TODO entries
* Update migration files to sync with latest master
* Expose API endpoint for viewing part pricing information
* Update migration file
* Improvements:
- Updated model with new fields
- Code for calculating BOM price
- Code for calculating internal price
- Code for calculating supplier price
- Updated unit testing
* Fix (and test) for API serializer
* Including min/max pricing data in part serializer
* Bump API version
* Add pricing overview information in part table
- Adds helper function for formatting currency data
- No longer pre-render "price strings" on the server
* Overhaul of BOM API
- Pricing data no longer calculated "on the fly"
- Remove expensive annotation operations
- Display cached price range information in BOM table
* Filter BOM items by "has pricing"
* Part API endpoint can be filtered by price range
* Updpated API version notes
* Improvements for price caching calculations
- Handle null price values
- Handle case where conversion rates are missing
- Allow manual update via API
* Button to manually refresh pricing
* Improve rendering of price-break table
* Update supplier part pricing table
* Updated js functions
* Adds background task to update assembly pricing whenever a part price cache is changed
* Updates for task offloading
* HTML tweaks
* Implement calculation of historical purchase cost
- take supplier part pack size into account
- improve unit tests
* Improvements for pricing tab rendering
* Refactor of pricing page
- Move javascript functions out into separate files
- Change price-break tables to use bar graphs
- Display part pricing history table and chart
- Remove server-side rendering for price history data
- Fix rendering of supplier pricing table
- Adds extra filtering options to the SupplierPriceBreak API endpoint
* Refactor BOM pricing chart / table
- Display as bar chart with min/max pricing
- Display simplified BOM table
* Update page anchors
* Improvements for BOM pricing table display
* Refactoring sales data tables
- Add extra data and filter options to sales order API endpoints
- Display sales order history table and chart
* Add extra fields to PartPricing model:
- sale_price_min
- sale_price_max
- sale_history_min
- sale_history_max
* Calculate and cache sale price data
* Update part pricing when PurchaseOrder is completed
* Update part pricing when sales order is completed
* Signals for updating part pricing cache
- Whenever an internal price break is created / edited / deleted
- Whenever a sale price break is created / edited / deleted
* Also trigger part pricing update when BomItem is created / edited / deleted
* Update part pricing whenever a supplier price break is updated
* Remove has_complete_bom_pricing method
* Export min/max pricing data in BOM file
* Fix pricing data in BOM export
- Calculate total line cost
- Use more than two digits
* Add pricing information to part export
Also some improvements to part exporting
* Allow download of part category table
* Allow export of stock location data to file
* Improved exporting of StockItem data
* Add cached variant pricing data
- New fields in part pricing model
- Display variant pricing overview in "pricing" tab
* Remove outdated "PART_SHOW_PRICE_HISTORY" setting
* Adds scheduled background task to periodically update part pricing
* Internal prices can optionally override other pricing
* Update js file checks
* Update price breaks to use 6 decimal places
* Fix for InvenTreeMoneySerializer class
- Allow 6 decimal places through the API
* Update for supplier price break table
* javascript linting fix
* Further js fixes
* Unit test updates
* Improve rendering of currency in templates
- Do not artificially limit to 2 decimal places
* Unit test fixes
* Add pricing information to part "details" tab
* Tweak for money formatting
* Enable sort-by-price in BOM table
* More unit test tweaks
* Update BOM exporting
* Fixes for background worker process
- To determine if worker is running, look for *any* successful task, not just heartbeat
- Heartbeat rate increased to 5 minute intervals
- Small adjustments to django_q settings
Ref: https://github.com/inventree/InvenTree/issues/3921
(cherry picked from commit cb26003b92)
* Force background processing of heartbeat task when server is started
- Removes the ~5 minute window in which the server "thinks" that the worker is not actually running
* Adjust strategy for preventing recursion
- Rather than looking for duplicate parts, simply increment a counter
- Add a "scheduled_for_update" flag to prevent multiple updates being scheduled
- Consolidate migration files
* Adds helper function for rendering a range of prices
* Include variant cost in calculations
* Fixes for "has_pricing" API filters
* Ensure part pricing status flags are reset when the server restarts
* Bug fix for BOM API filter
* Include BOM quantity in BOM pricing chart
* Small tweaks to pricing tab
* Prevent caching when looking up settings in background worker
- Caching across mnultiple processes causes issues
- Need to move to something like redis to solve this
- Ref: https://github.com/inventree/InvenTree/issues/3921
* Fixes for /part/pricing/ detail API endpoint
* Update pricing tab
- Consistent naming
* Unit test fixes
* Prevent pricing updates when loading test fixtures
* Fix for Part.pricing
* Updates for "check_missing_pricing"
* Change to pie chart for BOM pricing
* Unit test fix
* Updates
- Sort BOM pie chart correctly
- Simplify PartPricing.is_valid
- Pass "limit" through to check_missing_pricing
- Improved logic for update scheduling
* Add option for changing how many decimals to use when displaying pricing data
* remove old unused setting
* Consolidate settings tabs for pricing and currencies
* Fix CI after changing settings page
* Fix rendering for "Supplier Pricing"
- Take unit pricing / pack size into account
* Extra filtering / ordering options for the SupplierPriceBreak API endpoint
* Fix for purchase price history graph
- Use unit pricing (take pack size into account)
* JS fixes
* Add 'barcode_hash' data to more API serializers:
- part
- stock location
- supplier part
* Bump API version
* Make 'barcode_hash' fields read-only via the API
* Fix for Part serializer
* Adds 'consumable' field to BomItem model
* Add consumable field to API
* Consumable items always count as "allocated" for a build
* Add new BOM fields to BOM item checksum calculation
* Display 'consumable' status in BOM table
* Fix order of database migrations
* Update unit tests
* Fix for BOM table
* Remove "infinite" field from StockItem model
- Not used anywhere for functionality
- Hidden from the user
- Now replaced by the "consumable" concept in the BuildOrder model
* Update build order allocation table display
* Prevent auto-allocation of stock to consumable BOM items
* Ignore consumable BOM items when allocating stock to a build order
* Reimplmement "footer" row for BOM table
* Fix "can_build" calculation
- Ignore "consumable" BOM items
* Unrelated typo fix
* Tweak BOM table
* More visual tweaks to BOM table
* Add unit test for consumable field
* Hard-code URL fforr loadPartParameterTable function
* Improve API efficiency for including parameter data in Part query
* Fix loading of part parameter data into table
* Adds 'description' field to PartParameterTemplate model
* Add 'description' field to API, update settings table
* Bump API version
* Allow more characters in PartParameterTemplate name
* Added icon to stock location
- added `icon` field to `stock_stocklocation` model
- added input field to stock location form
- added icon to breadcrumb treeview in header
- added icon to sub-locations table
- added icon to location detail information
- added `STOCK_LOCATION_DEFAULT_ICON` setting as default
* Added icon to part category
- added `icon` field to `part_partcategory` model
- added input field to part category form
- added icon to breadcrumb treeview in header
- added icon to sub-categories table
- added icon to category detail information
- added `PART_CATEGORY_DEFAULT_ICON` setting as default
* Added `blocktrans` to allowed tags in ci check
* fix: style
* Added `endblocktrans` to allowed tags in ci check
* fix: missing `,` in ci check allowed tags script
* Removed blocktrans from js and fixed style
* Allow part category table to be ordered by part count
* Add queryset annotation for part-category part-count
- Uses subquery to annotate the part-count for sub-categories
- Huge reduction in number of queries
* Update 'pathstring' property of PartCategory and StockLocation
- No longer a dynamically calculated value
- Constructed when the model is saved, and then written to the database
- Limited to 250 characters
* Data migration to re-construct pathstring for PartCategory objects
* Fix for tree model save() method
* Add unit tests for pathstring construction
* Data migration for StockLocation pathstring values
* Update part API
- Add new annotation to PartLocationDetail view
* Update API version
* Apply similar annotation to StockLocation API endpoints
* Extra tests for PartCategory API
* Unit test fixes
* Allow PartCategory and StockLocation lists to be sorted by 'pathstring'
* Further unit test fixes
* Adds configurable setting for maximum remote image size
* Add helper function for downloading image from remote URL
- Will replace existing function
- Performs more thorough sanity checking
* Replace existing image downloading code
- part image uses new generic function
- company image uses new generic function
* Rearrange settings
* Refactor and cleanup existing views / forms
* Add unit testing for image downloader function
* Refactor image downloader forms
- Part image download now uses the API
- Company image download now uses the API
- Remove outdated forms / views / templates
* Increment API version
* Prevent remote image download via API if the setting is not enabled
* Do not attempt to validate or extract image from blank URL
* Fix custom save() serializer methods
* Bug fix for "multi delete" form
- Was requesting entire LIST endpoint before launching form
- Could cause extremely long delays before window opened
* Improve rendering of "no stock available" in BOM table
* Adds footer row to BOM table
- Display total number of parts
- Display minimum "can build" amount
* Added extra information to footer row
* Annotate 'ordering' quantity to BOM list
- Display this quantity in the BOM table
* Bump API version
* JS linting
* Allow BOM list to be filtered by "on_order" parameter
* Add information showing amount that can be built once orders are received
* Lazy load the pricing bom table when the "pricing" tab is selected
* Update django-debug-toolbar configuration
* Major refactoring for the 'can_build' function
- Use a single annotated query to the db, rather than a for loop (which is what a caveman would use)
- Query performance is greatly improved
- Also refactors existing variant-part-stock subquery code, to make it re-usable
* Use minified JS and CSS where possible
* Render a 'preview' version of each part image
- Saves load time when the image is quite large
- Adds a data migration to render out the new variation
* Adds 'preview' version of company images
* Defer loading of javascript files
Note: some cannot be deferred - jquery in particular
* Crucial bugfix for user roles context
- Previously was *not* being calculated correctly
- A non-superuser role would most likely display pages incorrectly
* Prevent loading of "about" on every page
- Load dynamically when requested
- Takes ~400ms!
- Cuts out a lot of fat
* Match displayed image size to preview image size
* Utilize caching framework for accessing user "role" information
- Reduces number of DB queries required by rendering framework
* Remove redundant query elements
* Remove 'stock' field from PartBrief serializer
- A calculated field on a serializer is a *bad idea* when that calculation requires a DB hit
* Query improvements for StockItem serializer
- Remove calculated fields
- Fix annotations
* Bug fixes
* Remove JS load test
- Loading of JS files is now deferred, so the unit test does not work as it used to
* Fix broken template for "maintenance" page
* Remove thumbnail generation migrations
- Already performed manually as part of ''invoke migrate"
- Running as a migration causes unit test problems
- Not sensible to run this as a data-migration anyway
* tweak for build table
* Add new global setting to control auto-upload of test reports
* Adds callback to attach a copy of the test report when printing
* Fix for all attachment API endpoints
- The AttachmentMixin must come first!
- User was not being set, as the custom 'perform_create' function was never called
* Remove duplicated UserSerializer
* display uploading user in attachment table
* Add unit test to check the test report is automatically uploaded
* Moving PartCategoryParameterTemplate model to the API
- Add detail API endpoint
- Add 'create' action to LIST endpoint
* Update settings page to use the new API forms
* Remove old views / forms
* Update API version
* Fix table buttons
* Add title to deletion form
* Add unit tests for new API views
* Refactor out 'ordering' serializer annotation field
* Refactor BomItem serializer annotations
* Factor out MPTT OuterRef query
* Add 'available_stock' annotation to SalesOrderLineItem serializer
- Allows for better rendering of stock availability in sales order table
* Improve 'available quantity' rendering of salesorderlineitem table
* Bump API version
* Add docstring
* Add pre-commit to the stack
* exclude static
* Add locales to excludes
* fix style errors
* rename pipeline steps
* also wait on precommit
* make template matching simpler
* Use the same code for python setup everywhere
* use step and cache for python setup
* move regular settings up into general envs
* just use full update
* Use invoke instead of static references
* make setup actions more similar
* use python3
* refactor names to be similar
* fix runner version
* fix references
* remove incidential change
* use matrix for os
* Github can't do this right now
* ignore docstyle errors
* Add seperate docstring test
* update flake call
* do not fail on docstring
* refactor setup into workflow
* update reference
* switch to action
* resturcture
* add bash statements
* remove os from cache
* update input checks
* make code cleaner
* fix boolean
* no relative paths
* install wheel by python
* switch to install
* revert back to simple wheel
* refactor import export tests
* move setup keys back to not disturbe tests
* remove docstyle till that is fixed
* update references
* continue on error
* add docstring test
* use relativ action references
* Change step / job docstrings
* update to merge
* reformat comments 1
* fix docstrings 2
* fix docstrings 3
* fix docstrings 4
* fix docstrings 5
* fix docstrings 6
* fix docstrings 7
* fix docstrings 8
* fix docstirns 9
* fix docstrings 10
* docstring adjustments
* update the remaining docstrings
* small docstring changes
* fix function name
* update support files for docstrings
* Add missing args to docstrings
* Remove outdated function
* Add docstrings for the 'build' app
* Make API code cleaner
* add more docstrings for plugin app
* Remove dead code for plugin settings
No idea what that was even intended for
* ignore __init__ files for docstrings
* More docstrings
* Update docstrings for the 'part' directory
* Fixes for related_part functionality
* Fix removed stuff from merge 99676ee
* make more consistent
* Show statistics for docstrings
* add more docstrings
* move specific register statements to make them clearer to understant
* More docstrings for common
* and more docstrings
* and more
* simpler call
* docstrings for notifications
* docstrings for common/tests
* Add docs for common/models
* Revert "move specific register statements to make them clearer to understant"
This reverts commit ca96654622.
* use typing here
* Revert "Make API code cleaner"
This reverts commit 24fb68bd3e.
* docstring updates for the 'users' app
* Add generic Meta info to simple Meta classes
* remove unneeded unique_together statements
* More simple metas
* Remove unnecessary format specifier
* Remove extra json format specifiers
* Add docstrings for the 'plugin' app
* Docstrings for the 'label' app
* Add missing docstrings for the 'report' app
* Fix build test regression
* Fix top-level files
* docstrings for InvenTree/InvenTree
* reduce unneeded code
* add docstrings
* and more docstrings
* more docstrings
* more docstrings for stock
* more docstrings
* docstrings for order/views
* Docstrings for various files in the 'order' app
* Docstrings for order/test_api.py
* Docstrings for order/serializers.py
* Docstrings for order/admin.py
* More docstrings for the order app
* Add docstrings for the 'company' app
* Add unit tests for rebuilding the reference fields
* Prune out some more dead code
* remove more dead code
Co-authored-by: Oliver Walters <oliver.henry.walters@gmail.com>