The use of `else` or `elif` becomes redundant and can be dropped if the last statement under the leading `if` / `elif` block is a `return` statement.
In the case of an `elif` after `return`, it can be written as a separate `if` block.
For `else` blocks after `return`, the statements can be shifted out of `else`. Please refer to the examples below for reference.
Refactoring the code this way can improve code-readability and make it easier to maintain.
Co-authored-by: deepsource-autofix[bot] <62050782+deepsource-autofix[bot]@users.noreply.github.com>
There shouldn't be any blank lines after the function docstring.
Remove the blank lines to fix this issue.
Co-authored-by: deepsource-autofix[bot] <62050782+deepsource-autofix[bot]@users.noreply.github.com>
* Added model changes for StockLocationTypes
* Implement icon for CUI
* Added location type to location table with filters
* Fix ruleset
* Added tests
* Bump api version to v136
* trigger: ci
* Bump api version variable too
* Skip ready functions if not in main thread or plugins are not loaded yet
* Debug integration tests
* Update ready.py
* Update ready.py
* Fix isInMainThread and isPluginRegistryLoaded ready functions
* Preload gunicorn app to only invoke the appconfig ready functions once
* debug: test prints for statistics
* Remove debug print
* Test without
* Revert "Test without"
This reverts commit 1bc18728935f2cebed38ae64ffe9f4e2f1d8e539.
* Second test
* Add checks back to part, label, user model
* Add checks back to inventree, plugin apps
* log server output for debugging
* hopefully I can get the log this time+
* Next test
* Test with --noreload
* Next test
* trigger: ci, because session expired
* block the second ready execution instead of the first
* fix: load order
* Fix test and revert gh actions workflow change
* Added all_apps method to reload machanism
* Changed detect reload mechanism
* Also trigger ready on reload
* Add skipping second reload back for testing mode
* Added doc string back
* Update InvenTree/plugin/base/integration/AppMixin.py
* 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
* add report feature for stock locations
* fix flake 8 errors
* run pre-commit run --all-files to fix style errors
* add new model
* create default stock location
* 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>
* 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
* Add new BuildLine model
- Represents an instance of a BOM item against a BuildOrder
* Create BuildLine instances automatically
When a new Build is created, automatically generate new BuildLine items
* Improve logic for handling exchange rate backends
* logic fixes
* Adds API endpoints
Add list and detail API endpoints for new BuildLine model
* update users/models.py
- Add new model to roles definition
* bulk-create on auto_allocate
Save database hits by performing a bulk-create
* Add skeleton data migration
* Create BuildLines for existing orders
* Working on building out BuildLine table
* Adds link for "BuildLine" to "BuildItem"
- A "BuildItem" will now be tracked against a BuildLine
- Not tracked directly against a build
- Not tracked directly against a BomItem
- Add schema migration
- Add data migration to update links
* Adjust migration 0045
- bom_item and build fields are about to be removed
- Set them to "nullable" so the data doesn't get removed
* Remove old fields from BuildItem model
- build fk
- bom_item fk
- A lot of other required changes too
* Update BuildLine.bom_item field
- Delete the BuildLine if the BomItem is removed
- This is closer to current behaviour
* Cleanup for Build model
- tracked_bom_items -> tracked_line_items
- untracked_bom_items -> tracked_bom_items
- remove build.can_complete
- move bom_item specific methods to the BuildLine model
- Cleanup / consolidation
* front-end work
- Update javascript
- Cleanup HTML templates
* Add serializer annotation and filtering
- Annotate 'allocated' quantity
- Filter by allocated / trackable / optional / consumable
* Make table sortable
* Add buttons
* Add callback for building new stock
* Fix Part annotation
* Adds callback to order parts
* Allocation works again
* template cleanup
* Fix allocate / unallocate actions
- Also turns out "unallocate" is not a word..
* auto-allocate works again
* Fix call to build.is_over_allocated
* Refactoring updates
* Bump API version
* Cleaner implementation of allocation sub-table
* Fix rendering in build output table
* Improvements to StockItem list API
- Refactor very old code
- Add option to include test results to queryset
* Add TODO for later me
* Fix for serializers.py
* Working on cleaner implementation of build output table
* Add function to determine if a single output is fully allocated
* Updates to build.js
- Button callbacks
- Table rendering
* Revert previous changes to build.serializers.py
* Fix for forms.js
* Rearrange code in build.js
* Rebuild "allocated lines" for output table
* Fix allocation calculation
* Show or hide column for tracked parts
* Improve debug messages
* Refactor "loadBuildLineTable"
- Allow it to also be used as output sub-table
* Refactor "completed tests" column
* Remove old javascript
- Cleans up a *lot* of crusty old code
* Annotate the available stock quantity to BuildLine serializer
- Similar pattern to BomItem serializer
- Needs refactoring in the future
* Update available column
* Fix build allocation table
- Bug fix
- Make pretty
* linting fixes
* Allow sorting by available stock
* Tweak for "required tests" column
* Bug fix for completing a build output
* Fix for consumable stock
* Fix for trim_allocated_stock
* Fix for creating new build
* Migration fix
- Ensure initial django_q migrations are applied
- Why on earth is this failing now?
* Catch exception
* Update for exception handling
* Update migrations
- Ensure inventreesetting is added
* Catch all exceptions when getting default currency code
* Bug fix for currency exchange rates update
* Working on unit tests
* Unit test fixes
* More work on unit tests
* Use bulk_create in unit test
* Update required quantity when a BuildOrder is saved
* Tweak overage display in BOM table
* Fix icon in BOM table
* Fix spelling error
* More unit test fixes
* Build reports
- Add line_items
- Update docs
- Cleanup
* Reimplement is_partially_allocated method
* Update docs about overage
* Unit testing for data migration
* Add "required_for_build_orders" annotation
- Makes API query *much* faster now
- remove old "required_parts_to_complete_build" method
- Cleanup part API filter code
* Adjust order of fixture loading
* Fix unit test
* Prevent "schedule_pricing_update" in unit tests
- Should cut down on DB hits significantly
* Unit test updates
* Improvements for unit test
- Don't hard-code pk values
- postgresql no likey
* Better unit test
* make currency choices independend
* Remove check for field, just try to get rid of it
* Add IF EXISTS to avoid error (works in postgres)
* Look for operational error, not programming error
* Use variants, depending on errors caused
* [FR] Add Feature flags
Fixes#4965
* Add option to define custom flags
* Revert "make currency choices independend"
This reverts commit ab84a7ff830bfdf8df2235ec11f5a83e05533a10.
* try fixing mysql
* more safeguards
* fix executioner call
* a fck
* use migrations. syntax
* and another round for mysql
* revert print change
* use UTC for datetime
* Update part.migrations.0112
- Add custom migration class which handles errors
* Add unit test for migration
- Ensure that the new fields are added to the model
* Update reference to PR
* fix ruleset for missing_models
* fix ruleset for flags_flagstate
* add API endpoints for flags
* add tests for new API endpoints
* fix tests
* fix merge
* fix tests
---------
Co-authored-by: martin <martin@iggland.com>
Co-authored-by: Oliver Walters <oliver.henry.walters@gmail.com>
* 'Tag' management
Fixes#83
* Add for ManufacturerPart, SupplierPart
* Add tags for StockLocation, StockItem
* fix serializer definition
* add migrations
* update pre-commit
* bump dependencies
* revert updates
* set version for bugbear
* remove bugbear
* readd bugbear remove isort
* and remove bugbear again
* remove bugbear
* make tag fields not required
* add ruleset
* Merge migrations
* fix migrations
* add unittest for detail
* test tag add
* order api
* reduce database access
* add tag modification test
* use overriden serializer to ensuer the manager is always available
* fix typo
* fix serializer
* increae query thershold by 1
* move tag serializer
* fix migrations
* content_types are changing between tests - removing them
* remove unneeded fixture
* Add basic docs
* bump API version
* add api access to the docs
* add python code
* Add tags to search and filters for all models
* Support image uploads in the "notes" markdown fields
- Implemented using the existing EasyMDE library
- Copy / paste support
- Drag / drop support
* Remove debug message
* Updated API version
* Better UX when saving notes
* Pin PIP version (for testing)
* Bug fixes
- Fix typo
- Use correct serializer type
* Add unit testing
* Update role permissions
* Typo fix
* Update migration file
* Adds a notes mixin class to be used for refactoring
* Refactor existing models with notes to use the new mixin
* Add helper function for finding all model types with a certain mixin
* Refactor barcode plugin to use new method
* Typo fix
* Add daily task to delete old / unused notes
* Add ProjectCode model
(cherry picked from commit 382a0a2fc32c930d46ed3fe0c6d2cae654c2209d)
* Adds IsStaffOrReadyOnly permissions
- Authenticated users get read-only access
- Staff users get read/write access
(cherry picked from commit 53d04da86c4c866fd9c909d147d93844186470b4)
* Adds API endpoints for project codes
(cherry picked from commit 5ae1da23b2eae4e1168bc6fe28a3544dedc4a1b4)
* Add migration file for projectcode model
(cherry picked from commit 5f8717712c65df853ea69907d33e185fd91df7ee)
* Add project code configuration page to the global settings view
* Add 'project code' field to orders
* Add ability to set / edit the project code for various order models
* Add project code info to order list tables
* Add configuration options for project code integration
* Allow orders to be filtered by project code
* Refactor table_filters.js
- Allow orders to be filtered dynamically by project code
* Bump API version
* Fixes
* Add resource mixin for exporting project code in order list
* Add "has_project_code" filter
* javascript fix
* Edit / delete project codes via API
- Also refactor some existing JS
* Move MetadataMixin to InvenTree.models
To prevent circular imports
(cherry picked from commit d23b013881eaffe612dfbfcdfc5dff6d729068c6)
* Fixes for circular imports
* Add metadata for ProjectCode model
* Add Metadata API endpoint for ProjectCode
* Add unit testing for ProjectCode API endpoints
* Support image uploads in the "notes" markdown fields
- Implemented using the existing EasyMDE library
- Copy / paste support
- Drag / drop support
* Remove debug message
* Updated API version
* Better UX when saving notes
* Pin PIP version (for testing)
* Bug fixes
- Fix typo
- Use correct serializer type
* Add unit testing
* Update role permissions
* Typo fix
* Update migration file
* Adds a notes mixin class to be used for refactoring
* Refactor existing models with notes to use the new mixin
* Add helper function for finding all model types with a certain mixin
* Refactor barcode plugin to use new method
* Typo fix
* Add daily task to delete old / unused notes
* Bug fix for barcode refactoring
* Add unit testing for function
* Adds custom search filter to allow 'regex' searching of results
* Specify if "shell" can access database for certain commands
* Bug fix for settings API
- Do not allow cache on detail endpoints
- Was causing strange error conditions with missing or duplicate PK values
* Adds user setting to control regex search
* Enable regex for search queries
- bootstrap tables
- search preview
* Pass search options through bettererer
* Refactor API endpoints to use new filter approach
* Bump API version
* Add "whole word" search
- Closes https://github.com/inventree/InvenTree/issues/4510
* Handle case where existing fields are empty
* pop > get
* Adds ReturnOrder and ReturnOrderAttachment models
* Adds new 'role' specific for return orders
* Refactor total_price into a mixin
- Required for PurchaseOrder and SalesOrder
- May not be required for ReturnOrder (remains to be seen)
* Adds API endpoints for ReturnOrder
- Add list endpoint
- Add detail endpoint
- Adds required serializer models
* Adds basic "index" page for Return Order model
* Update API version
* Update navbar text
* Add db migration for new "role"
* Add ContactList and ContactDetail API endpoints
* Adds template and JS code for manipulation of contacts
- Display a table
- Create / edit / delete
* Splits order.js into multiple files
- Javascript files was becoming extremely large
- Hard to debug and find code
- Split into purchase_order / return_order / sales_order
* Fix role name (change 'returns' to 'return_order')
- Similar to existing roles for purchase_order and sales_order
* Adds detail page for ReturnOrder
* URL cleanup
- Use <int:pk> instead of complex regex
* More URL cleanup
* Add "return orders" list to company detail page
* Break JS status codes into new javascript file
- Always difficult to track down where these are rendered
- Enough to warrant their own file now
* Add ability to edit return order from detail page
* Database migrations
- Add new ReturnOrder modeles
- Add new 'contact' field to external orders
* Adds "contact" to ReturnOrder
- Implement check to ensure that the selected "contact" matches the selected "company"
* Adjust filters to limit contact options
* Fix typo
* Expose 'contact' field for PurchaseOrder model
* Render contact information
* Add "contact" for SalesOrder
* Adds setting to enable / disable return order functionality
- Simply hides the navigation elements
- API is not disabled
* Support filtering ReturnOrder by 'status'
- Refactors existing filter into the OrderFilter class
* js linting
* More JS linting
* Adds ReturnOrderReport model
* Add serializer for the ReturnOrderReport model
- A little bit of refactoring along the way
* Admin integration for new report model
* Refactoring for report.api
- Adds generic mixins for filtering queryset (based on updates to label.api)
- Reduces repeated code a *lot*
* Exposes API endpoints for ReturnOrderReport
* Adds default example report file for ReturnOrder
- Requires some more work :)
* Refactor report printing javascript code
- Replace all existing functions with 'printReports'
* Improvements for default StockItem test report template
- Fix bug in template
- Handle potential errors in template tags
- Add more helpers to report tags
- Improve test result rendering
* Reduce logging verbosity from weasyprint
* Refactor javascript for label printing
- Consolidate into a single function
- Similar to refactor of report functions
* Add report print button to return order page
* Record user reference when creating via API
* Refactor order serializers
- Move common code into AbstractOrderSerializer class
* Adds extra line item model for the return order
- Adds serializer and API endpoints as appropriate
* Render extra line table for return order
- Refactor existing functions into a single generic function
- Reduces repeated JS code a lot
* Add ability to create a new extra line item
* Adds button for creating a new lien item
* JS linting
* Update test
* Typo fix
(cherry picked from commit 28ac2be35bd0148c598629988d40b1a234f069a5)
* Enable search for return order
* Don't do pricing (yet) for returnorder extra line table
- Fixes an uncaught error
* Error catching for api.js
* Updates for order models:
- Add 'target_date' field to abstract Order model
- Add IN_PROGRESS status code for return order
- Refactor 'overdue' and 'outstanding' API queries
- Refactor OVERDUE_FILTER on order models
- Refactor is_overdue on order models
- More table filters for return order model
* JS cleanup
* Create ReturnOrderLineItem model
- New type of status label
- Add TotalPriceMixin to ReturnOrder model
* Adds an API serializer for the ReturnOrderLineItem model
* Add API endpoints for ReturnOrderLineItem model
- Including some refactoring along the way
* javascript: refactor loadTableFilters function
- Pass enforced query through to the filters
- Call Object.assign() to construct a superset query
- Removes a lot of code duplication
* Refactor hard-coded URLS to use {% url %} lookup
- Forces error if the URL is wrong
- If we ever change the URL, will still work
* Implement creation of new return order line items
* Adds 'part_detail' annotation to ReturnOrderLineItem serializer
- Required for rendering part information
* javascript: refactor method for creating a group of buttons in a table
* javascript: refactor common buttons with helper functions
* Allow edit and delete of return order line items
* Add form option to automatically reload a table on success
- Pass table name to options.refreshTable
* JS linting
* Add common function for createExtraLineItem
* Refactor loading of attachment tables
- Setup drag-and-drop as part of core function
* CI fixes
* Refactoring out some more common API endpoint code
* Update migrations
* Fix permission typo
* Refactor for unit testing code
* Add unit tests for Contact model
* Tests for returnorder list API
* Annotate 'line_items' to ReturnOrder serializer
* Driving the refactor tractor
* More unit tests for the ReturnOrder API endpoints
* Refactor "print orders" button for various order tables
- Move into "setupFilterList" code (generic)
* add generic 'label printing' button to table actions buttons
* Refactor build output table
* Refactoring icon generation for js
* Refactoring for Part API
* Fix database model type for 'received_date'
* Add API endpoint to "issue" a ReturnOrder
* Improvements for stock tracking table
- Add new status codes
- Add rendering for SalesOrder
- Add rendering for ReturnOrder
- Fix status badges
* Adds functionality to receive line items against a return order
* Add endpoints for completing and cancelling orders
* Add option to allow / prevent editing of ReturnOrder after completed
* js linting
* Wrap "add extra line" button in setting check
* Updates to order/admin.py
* Remove inline admin for returnorderline model
* Updates to pass CI
* Serializer fix
* order template fixes
* Unit test fix
* Fixes for ReturnOrder.receive_line_item
* Unit testing for receiving line items against an RMA
* Improve example report for return order
* Extend unit tests for reporting
* Cleanup here and there
* Unit testing for order views
* Clear "sales_order" field when returning against ReturnOrder
* Add 'location' to deltas when returning from customer
* Bug fix for unit test
* Adds 'global search' endpoint which allows for a single API request for multi-model search
* Pass 'search' and 'offset' params through to list methods
* Refactor model renderer function selection
* Refactor existing javascript
* Update API version
* javascript cleanup
* Refactor model rendering code
- Pipe into a single function for consistent display
- Add link rendering support
* Improve UX for searching
* JS linting
* Fix bug caused by typo
* Fix link rendering for company
* Adds unit testing for global search endpoint
* Add settings to control upcoming stocktake features
* Adds migration for "cost range" when performing stocktake
* Add cost data to PartStocktakeSerializer
Implement a new custom serializer for currency data type
* Refactor existing currency serializers
* Update stocktake table and forms
* Prevent trailing zeroes in forms
* Calculate cost range when adding manual stocktake entry
* Display interactive chart for part stocktake history
* Ensure chart data are converted to common currency
* Adds new model for building stocktake reports
* Add admin integration for new model
* Adds API endpoint to expose list of stocktake reports available for download
- No ability to edit or delete via API
* Add setting to control automated deletion of old stocktake reports
* Updates for settings page
- Load part stocktake report table
- Refactor function to render a downloadable media file
- Fix bug with forcing files to be downloaded
- Split js code into separate templates
- Make use of onPanelLoad functionalitty
* Fix conflicting migration files
* Adds API endpoint for manual generation of stocktake report
* Offload task to generate new stocktake report
* Adds python function to perform stocktake on a single part instance
* Small bug fixes
* Various tweaks
- Prevent new stocktake models from triggering plugin events when created
- Construct a simple csv dataset
* Generate new report
* Updates for report generation
- Prefetch related data
- Add extra columns
- Keep track of stocktake instances (for saving to database later on)
* Updates:
- Add confirmation message
- Serializer validation checks
* Ensure that background worker is running before manually scheduling a new stocktake report
* Add extra fields to stocktake models
Also move code from part/models.py to part/tasks.py
* Add 'part_count' to PartStocktakeReport table
* Updates for stocktake generation
- remove old performStocktake javascript code
- Now handled by automated server-side calculation
- Generate report for a single part
* Add a new "role" for stocktake
- Allows fine-grained control on viewing / creating / deleting stocktake data
- More in-line with existing permission controls
- Remove STOCKTAKE_OWNER setting
* Add serializer field to limit stocktake report to particular locations
* Use location restriction when generating a stocktake report
* Add UI buttons to perform stocktake for a whole category tree
* Add button to perform stocktake report for a location tree
* Adds a background tasks to handle periodic generation of stocktake reports
- Reports are generated at fixed intervals
- Deletes old reports after certain number of days
* Implement notifications for new stocktake reports
- If manually requested by a user, notify that user
- Cleanup notification table
- Amend PartStocktakeModel for better notification rendering
* Hide buttons on location and category page if stocktake is not enabled
* Cleanup log messages during server start
* Extend functionality of RoleRequired permission mixin
- Allow 'role_required' attribute to be added to an API view
- Useful when using a serializer class that does not have a model defined
* Add boolean option to toggle whether a report will be generated
* Update generateStocktake function
* Improve location filtering
- Don't limit the actual stock items
- Instead, select only parts which exist within a given location tree
* Update API version
* String tweaks
* Fix permissions for PartStocktake API
* More unit testing for stocktake functionality
* QoL fix
* Fix for assigning inherited permissions
* Adds new model, API, serializers, etc
- Refactor InvenTreeAttachmentSerializer class
- Reduces code duplication
* Update front end
* Increment API version
* Add basic endpoint for group information
* Add hardcoded api-url lookup function for django models
* Adds JS function for rendering a 'group'
* Fix typo
* Add unit tests for new endpoints
* Increment API version
* JS linting
* [FR] Simple API endpoint to change own user metadata
Fixes#3979
* add tests
* fix tests
* add owner api tests
* add debug statments
* run all tests
* disable owner endpoint test for now
* spellfix
* Reenable ownership tests
* [BUG] Stock item ownership results in stock item being read-only
Fixes#4229
* rebuild ownership tests
* jsut test stock stuff for now
* move ownership check to Owner
* fix assertation with lazy objects
* test all of stock
* Add edit checks
* remove old tests
* run full coverage again
* fix test
* Remove stat context variables
* Revert "Remove stat context variables"
This reverts commit 0989c308d0cea9b9405a1338d257b542c6d33d73.
* 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
* 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 cb26003b92536f67fba640d84aa2a6596d18b4e0)
* 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 model for feed entries
* add task to update feed entries
* Add API routes
* Fix name in model
* rename model
* fix read endpoint
* reduce duplication in NewsFeed API endpoints
* reduce duplicated code
* add ui elements to index
* add missing migrations
* add ressource route
* add new model to admin
* reorder fields
* format timestamp
* make title linked
* reduce migrations to 1
* fix merge
* fix js style
* add model to ruleset
* Last Connection date for user in admin panel
display last connection for each user in user admin panel.
add the date at the end of the tab
* Update admin.py
* Update admin.py
* Fix API endpoint permission for the "AttachmentMixin" class
- Any authenticated user could perform CREATE and UPDATE operations on attachments
- Could be performed via the browsable DRF API
- Could also be performed via the front-end (with some advaned jiggering of OPTIONS code)
* Show or hide buttons depending on the permissions of the user
* Add shortcut for table permission check
* 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
* use shims for API view inheritation
* Add mixin for input sanitation
* fix clean operation to fix all string values
* Also clean up dicts
this is to future-proof this function
* Update docstirng
* proof custom methods against XSS through authenticated users
* Catch DoesNotExist error
* Move notificationtable function to js file
* Fix for custom metadata class
- Previously only worked if a POST or PUT action was available on the endpoint
- So, a ListAPIView endpoint would not actually work!
- Adding in a BulkDelete mixin to a ListAPIView caused failure
* Add unit test to ensure new OPTIONS metadata updates are checked
* Expand functionality of the existing BulkDelete mixin
- Allow deletion by custom filters
- Allow each implementing class to implement custom filters
- Adds more unit testing for BulkDelete mixin class
* Add bulk delete operation for Notification API
- Ensure users can only delete their *own* notifications
* Improve notification tables / buttons / etc
* Adds unit testing for bulk delete of notifications
- Fixed API permissions for notifications list endpoint
* Update BulkDelete operations for the StockItemTestResult table
* Use filters parameter in attachments table to ensure that only correct attachments are deleted
* JS linting
* Fixes for unit tests
* 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
* 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 ca9665462202c2d63f34b4fd920013b1457bbb6d.
* use typing here
* Revert "Make API code cleaner"
This reverts commit 24fb68bd3e1ccfea2ee398c9e18afb01eb340fee.
* 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>
* exclude testing excetions
* check user str
* check related users
* move no coverage marker
* fix assertation
* add test for filters
* do not cover logs