* Add initial benchmark test
* Enable event batching for BulkdCreate API mixin
* Fix duplicate save event for Parameter
* Apply event batching for bulk_update
* Similar testing for bulk_delete
* Add bulk-delete mixin for order line items
* Add unit tests
* Enable frontend support
* Add CHANGELOG entry
* Add locking control for TransferOrder
* Fix playwright tests
* Fix playwright tests
* Add a Revision column renderer
* Add Revision to SO and BO tables
* Move Description column after IPN and Revision to be consistent with other tables
* Use API for unit test
* Refactor SalesOrderSerialAllocationSerializer
- Move business logic into the SalesOrder model
* Add unit testing for serial allocation
* Remove MPTT from StockItem model
* cleanup stock fixture file
* Remove tree rebuild code for StockItem
* Adjust API
* Update CHANGELOG and API version
* remove tree references
* Additional checks
* Remove unused tests
* Add data migration test
* fix fk fields
* Cleanup
* Tweak unit test
* Revert bulk-create in unit test
* Don't rebuild StockItem models
* Add bulk_create_and_fetch helper model
- Overcome limitations of mysql
* Add unit test for new bulk-create helper
* Apply new helper to codebase
* Adjust unit test
* bug fix
* Adjust query limits
* Remove assert
* Add <GlobalPreviewDrawer> component
* Allow plugins to interact
* provide either pk or instance data
* open preview drawer from calendar views
* Launch preview drawer directly from tables
* Add preview types
* Fix types
* CLear data on close
* Fix transition
* Allow caller to pass preview component
* AttributeGrid
* Use a table component
* Display info items
* Navigate to detail page from drawer
* Updates
* Refactor to use part detail view
* Display parameters
* Fix image caching
* Apply same to StockItem
* Remove old component
* Refactor details grid component
* Preview panel for PurchaseOrder model
* Implement for SalesOrder
* Support ReturnOrder
* SupplierPart and ManufacturerPart
* Support preview in parameteric tables
* support Company and BuildOrder
* Fix numbervalue
* BuildOrder and SalesOrderShipment
* location and category
* add user setting
* Fix typing
* Handle link clicks within preview drawer
* fixes
* Implement onClose callback
* Handle row click when panel preview is disabled
* Support custom detail links
* update playwright tests
* UI tweaks
* Add CHANGELOG entry
* docs
* define default API params per model type
* Split out more docs pages
* Simplify state ref
* Refactoring
* Simplify PreviewDrawer component
* observe user setting in calendar view
* Enable PreviewDrawer from RowViewAction
* Push render functions onto ModelInformation dict
* Fix lib compilation
* Refactor internal uses of RowViewAction
* typescript fixes
* Simplify PreviewDrawer component structure
* remove TODO placeholders
* Add helper to bulk offload task
* bulk offload events
* Add unit test for bulk_offload_task
* Add context wrapper for bulk event creation inside looped funcs
* Add batching for stock tracking events
* Context wrapper for capturing offloaded tasks
* apply batching to other stock adjustment endpoints
* Add benchmarking tests for other API endpoints
* Benchmark test for serialize stock
* Reduce commet verbosity
* Apply benchmark to PO receive
* Refactor benchmarking
* PrefetchedPrimaryKeyRelatedField
- Provides O(1) lookup for serializer validation
- Significant improvements for large datasets
* Adjust unit test code
* Check for correct order of tracking operations
* Refactor API form fields
- Prevent reconstruction of all fields when single value changes
- Memoize components more intelligently
- Fix enter key callback ref
* memoize other field types too
* More memo
* Prevent duplicate API calls for related model field
* Add aria-label for IconField
* add playwright tests for form field coverage
* Adjust default behavior of "migrate" command
- Does not create new migration files automatically
* Add dummy field - ensure detected by CI
* Revert "Add dummy field - ensure detected by CI"
This reverts commit e7a101fe87.
* Fix typo
* Adjust contributing docs
* Add CHANGELOG entry
* Fix currency choices for PartPricing model
- Remove dynamic choices from model definition
- Move validation step to the serializer
- Add validator to ensure only valid currencies can be used
* Add regression test
* Bump API version
* Add "consumable" field to the Part model
* Add frontend integration
* Add badge
* Add docs
* Updated docs
* Add API filtering for new field
* Adjust API filters
* Update backend logic
* Adjust frontend
* Additional unit tests
* Update API version
* update test
* Add consumable icon
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* Fix OpenAPI multipart file fields to use binary format
Fixes#11246
* Update API version
* fix api version
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* Implement generic serializer for custom model duplication
* Apply pattern to BuildOrder
* Add more generic options
* Bump API version
* Adjust default option
* Refactor existing implementations
* Dynamic class typing
* Add duplicate field to more model types
- Company
- ManufacturerPart
- SupplierPart
- SalesOrderShipment
* Implement parameter duplication for more models:
- Company
- ManufacturerPart
- SupplierPart
* Simplify code
* Refactor
* Display non-field errors in table field
* Refactor validation for build output completion
- Run validation BEFORE trying to complete (serializer validation)
- Refactor and simplify common code
* Adjust unit tests
* Fix typing
* Remove debug
* Add TreeField component
* Add chevrons in dropdown menu
* Custom node rendering
* Add childIdentifier
* Ensure full value gets displayed
* Fix for search results
* Refactor old renderers
* Override field types
* use definition filters
* Better location validation messages
* Tweaks
* Fix unit test
* Include icon
* Fix playwright test
* Fix call to onValueChange
* Updated playwright tests
* Use pathstring in selectedLabel (if available)
* Mark structural nodes
* Retain selected value when dropdown open
* Add better placeholder values
* Simplify field selection
* Use callback funcs
* Don't use idx to identify rows
* Add debug function for finding why a component re-rendered
* Do not pass 'control' through to each row
* Prevent unnecessary re-rendering of table rows
* Adjust order of operations for hooks
* Keep props hidden
* Use lightweight NumberInput
* Use NumberInput elsewhere
* Add comment
* use rowId instead of idx
* Generic row memos
* Compare errors too
* Fix for BomItemSubstituteRow
* Adjust more forms
* memoize quantity
* Memoize build lines
* Fix re-rendering issues for build allocation
* Fix for useConsumeBuildLinesForm
* Fix for transfer order table
* Fix useReceiveLineItems
* Remove memoized pattern
* Fix row keys
* Cleanup
* Create useStockItems hook for memoizing items
* Refactoring
* More refactoring
* Remove obj reference
- preventing shallow comparison from working
* Add error message to useWhyDidYouUpdate
* Cleanup
* Cleanup dead code
* Adjust modal width
* Change attr name
* Remove autoFillFilters prop
* Adjustments for serialized stock
* Fix typing
* Bump frontend version
* Adjustments for playwright testing
* Fix ref issue
* Remove debug entry
* Update CHANGELOG.md
* Reintroduce index to table header
* Refactor common component
* Add 'active' field to the ProjectCode model
- Allows retiring of old project codes without deleting
* Update UI table
* Refactor ProjectCodeField
* Add unit test
* Bump API version and CHANGELOG
* working on merge transfer
* fix history when merging
* update messaging, add 'added' line in history
* reworked history logic
* removed old transfer logic
* remove formatting changes from vite file
* Bumped API version, added entry in docs for new global setting
* removed the tracking item overwrite, Use existing tracking event from transfer
* run pre-commit checks
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* color scheme: Use the users prefered colour scheme if one isn't defined in the store
* fix style
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* build(docker): compile backend trasnlations during image build
* test(docker): verify compiled backend translations exist in image
Add checks to the "Test Docker Image" step that assert the compiled
django.mo files are present for a few representative languages (de, fr,
ru, zh_Hans). This guards the newly added backend translation
compilation step in the production Dockerfile, ensuring the multilingual
artifacts are produced at the expected locale paths.
* test(docker): verify compiled frontend translations exist in image
* Optional 'locale' arg to format_money
- Allows override of system locale when generating reports
* Updated documentation
* Add unit tests
* Handle invalid locale
* Handle invalid locale
* Add new global setting to control currency locale in reports
* Use setting in reports
* Add CHANGELOG entry
* Further unit tests
* Add unit tests for new setting
* Update docs
* More docs
* Refactoring:
- Change REPORT_CURRENCY_LOCALE to REPORT_LOCALE
* Extend unit testing
* Refactor format_number
* Add unit tests for explicit format strings
* Update examples for format_date
* Updated unit tests
* Cleanup unit tests
* Fix more tests
* Adjust wording
* Remove global setting - simplify code
* Simplify unit tests
* Revert 'min_digits' to 'leading'
* Fix docs
* Refactor the render_currency function
- Move all functionality into report.py
* Cleanup duplicate code
* Updated docs
* Allow user to specify date_format
* Add support for 'leading' digits in render_currency
* Bug fix
* Fix unit test
* Add tests for "include_symbol"
* Hide expand icon for items without children
* Add searching to CategoryTree API
* Add "level" filter
* Automatically include parent tree when searching
* Include tree_id field
* Add search input to NavigationTree
* Add more API filters
* Load child nodes iteratively
* Fix dynamic loading of nodes
* Highlight selected item
* Include pathstring
* Fix insertion order
* Auto-expand to the selected ID
* Add "no results" message
* Refactor into generic components
* Expand to multi level
* Use async node loading functionality
* Add hovercard
* Implement same functionality for StockLocationTree API endpoint
* Adjust spacing
* Add connecting lines
* Add playwright test
* Bump API version
* Add CHANGELOG entry
* Update docs
* Update screenshot
* [API] Adjust permissions for machine restart
Can only be actioned by a staff user
* Fix import
* Wrong class
* Extend unit test
* Bump API version
* Update CHANGELOG
* Prevent double-save when creating an order
* Prevent double-save for BuildOrder
* More fixes
* Additional unit tests
* Revert code, remove create method against StockTrackingList
* Fix mixins
* add storage for historic import metadata for reporting and display purposes
fixes breakage fromhttps://github.com/inventree/InvenTree/pull/12169
* add api bump
* re-enable test
* fix migration
* ensure session is not overwritten
* fix statusrender without custom key
* Set custom_status_key via API
Refactor `custom_status_key` to be writable via the API and validate that the proposed value is valid for the current order status
* Refactor status_text serializer to consider custom status label
* Update api_version.py
* Additional unit testagainst N + 1
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
Co-authored-by: Oliver Walters <oliver.henry.walters@gmail.com>
* Raise error on multiple matches
* add new field to handle lookup_field selection
* Add unit tests
* Update frontend
* Bump API version
* Ensure string-iness of lookup field
* Tighten API permissions
- Require authenticated user for NotFoundView
- Hide 'active_plugins' behind is_authenticated
* Patch permissions hole in GlobalSettingsPermissions
* Additional API unit tests
* Require auth for observability endpoint
* Add explicit permission for PluginAdminDetail
* Bump API version
* Update unit tests
* Revert changes
* Update data importer child permissions
- Row data
- Column data
* Add unit tests
* Cleanup session data after import is completed
* Further scope narrowing
NotificationMessage.target_object_id and source_object_id were typed as
PositiveIntegerField, which overflows when the referenced model uses a
UUID primary key (e.g. MachineConfig). Django's GenericForeignKey stores
the PK as a string in the database, so the field type should be
CharField to accommodate any PK type (int, UUID, slug, etc.).
Changes:
- common/models.py: change target_object_id and source_object_id from
PositiveIntegerField to CharField(max_length=255) on NotificationMessage
- common/migrations/0044: AlterField migration for both columns
- order/tests.py: update assertion from integer 1 to str(1) since
CharField will now store the PK as a string
Fixes#12131
Signed-off-by: kaizeenn <khairil0153@gmail.com>
* Adjust panel layout
* edit list on click
* Optionally fetch selection list items
* Display in DetailDrawer
* Fix component locations
* Refactor entry table
* Add new entry
* Disable if locked
* Only validate choices if provided via API
* Mark "choices" as read-only
* Prevent delete of locked items
* Add more API unit tests
* Bump API version
* Adjust unit tests
* Default include choices
* Updated playwright test
* Improve test robustness
* Add custom URL fetcher for PDF rendering
* Fix for report helper functions
* Use new fetcher
* Additional unit tests
* Add new setting to control remote URL fetching
* validate URLs against SSRF
* Add global setting to disable URL fetching entirely
* Update docs
* Fix capitalization
* Fix logging backend
* Update CHANGELOG
* add admin button hotkey
* add duplicate hotkey
* generalised hotkeys for actions
* move to fnc
* fix type checking
* more hotkeys!
* add the first primary action to the hotkeys
* small fixes
* use capital hotkeys
* add keys for navigation
* add panel navigation hotkeys
* remove admin hotkey - navigating to attachments is imo more helpful
* address conflict on macos
* Remember last used label template and printer plugin per model type
* Added playwright test for printing preference persistence and format code
* Used waitFor for react-select assertions for test case fixing and persist plugin key correctly
* Updated the problem resolution code and the tests
* Fixed printing test assertion to avoid word boundary failure with concatenated text
* Handle missing machine location
- e.g. if location PK is invalid or has been deleted
* Add spotlight action for machine management panel
* Add unit test for code change
* Enable in-column filtering for model type
* Enable sorting by label size
* Enable backend ordering
* Improve filtering for report template table
* Update API version
* Make plugin registry hash independent of plugin discovery order
calculate_plugin_hash() iterates self.plugins.items() in insertion
order, which is the plugin discovery order of the local process. Two
processes can hold the same registry state (same plugins, versions,
active flags) in a different order and compute different hashes,
ping-ponging the _PLUGIN_REGISTRY_HASH setting and triggering endless
registry reloads in check_reload().
Sort by slug before hashing so the hash represents the registry state
rather than the iteration order of any particular process. Add a
regression test that reverses the plugin dict and asserts the hash is
unchanged.
* Address review comments: explicit sort key, guard against vacuous test
---------
Co-authored-by: Nasawa <christopher@anigeek.com>
* Check model permissions for printing
* Add unit tests
* Prevent printing of disabled reports
* Updated unit test
* Adjust unit test for printing
* Update API and CHANGELOG
* bump container deps
* specific n version
* switch to nvm as n is not officially supported
* fix bash script
* fix corepack
* move yarn config inline
* revert nvm usage
* UX: Disable standard allocation for trackable parts and add tooltip (#11811)
* Test: Update Playwright tests for disabled trackable allocation
* Fix: Align trackable allocation logic and tests based on review
* Test: Fix incorrect assumption of trackable Red Widget in pui_build.spec.ts
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* Expose HMR plugin
* Expose function for localizing a plugin component
* Update npm version
* better docs
* Plugin provides i18n instance
* Expose HMR plugin on different path
* Bump version (again)
* Ensure HMR plugin is properly built
* Bump (again)
* Specify callback function
* Bump package version
* Improved docstrings
* Stricter type hinting
* Expose properties for column based filtering
* Adjust renderers
* Hide filter if name does not match
* Allow multiple filters on same column
* Better formatting
* Add filtering support for multiple tables
* Revert yarn.lock changes
* Fix date input props
* Updated column
* Add filter to PartTable
* Add playwright tests for new column filters
* Update CHANGELOG
* Updated docs
* Reduce padding
* Update more table filters
* More filter columns
* Adjust playwright test
* Simplify playwright test
* Robustify playwright tests
* Add some delay
* Add some buffer time
* fix(tasks): bypass Invoke PTY for interactive superuser/flush commands
Docker TTY sessions could drop the first keypress and stall at the username prompt when using invoke superuser (and interactive flush).
Run these interactive management commands via direct subprocess stdio instead of Invoke PTY mediation.
Refs #11751.
* chore: remove changelog entry per review
* Framework for overriding plugin settings
* Update serializer
* Prevent writing of plugin setting values
* Unit tests
* Update API version and CHANGELOG
* Update docs
* Vertical scrolling calendar view
* Add new setting to control calendar horizon
* Keep refetching data as user scrolss
* Adjust view based on configured setting
* Reduce padding
* Simplify calendar layout
* Docs tweak
* Split out display settings
* Adjust playwright test
* Reduce reliance on transient dialogs
* Add HMR and React Fast Refresh support
* Run pre-commit hooks
* Fix 'hmrSetModule' module loading
The incoming module needs to include the URL from which it was loaded,
so that it's possible to enforce only loading modules imported from the same
pathname as the current module.
* Add error handling and improvements
- Add error handling to `useRemotePlugin` and simplify `RemoteComponent`
- Improve HMR to use a registry instead of a single global callback.
This should now handle two legacy plugin entry points being used at
the same time via RemoteComponent.
* Update docs
* Update CHANGELOG
* Remove use of LanguageContext from RemoteComponent
LanguageContext should not be necessary here, as it's provided in
ThemeContext, which is used in InvenTree's frontend entry.
* Fix incorrect import.meta.hot access
* Update Playwright test to match UI text changes
---------
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
* Add Tag API endpoints
* Enable filtering by model type
* Remove old tags filters against Part endpoint
* Add generic tags filter for filtering against tagged items
* Add API unit tests for the tags API endpoints
* Create generic mixin class for adding tags support
* Update existing tagged models
* Add tags to more model types
* Enable new tags API filtering for multiple models
* Add support for tag filtering in part table
* Update transfer table filters
* Add tags filter to more places
* Allow multiple values to be selected as filters
* Add a new 'tags' type form field
* Display tags on part page
* tags support for orders
* Add support for SalesOrderShipment
* build order
* Company support
* SupplierPart and ManufacturerPart
* support StockItem
* Enable tag filtering for attachments
* Make tagslist readonly
* docs
* Mark props as read only
* Update API version
* Update CHANGELOG
* force tags to be case insensitive
* Add playwright test for build order tags
* more playwright testing
* Fix docs link
* Fix for RenderInstance
- Do not call useNavigate within RenderInstance
- This breaks any plugins which try to use RenderInstance
- Pass navigate func through to <RenderInstance />
* Add playwright test for hover in forms
* Add translated plugin test
* Improve playwright tests
* Further unit test fixes
* Update docstring
* [bug] Various fixes
- Add get_api_url to EmailThread model
- Prevent setting creation during import
- Tweak BarcodeScanHistoryTable
* Tweak barcode history table tests
* Bump API version
* Update Dockerfile
* Update Dockerfile
* Added More Info In Barcode API Scans
Added DebugResponse
Added Suppliers Tested
Added Suppliers Errors
* Add NotFound to base Response
* Added Simple Plugin Debug
Changed "NotFound" to 'No_Match'
different style for Debug response
* Added finishing touches for API Error
* clean up + comments
* Added No Supplier Plugin error
* fix style
* Formatting and fixing comments
Added more variables
updated formatting
Added more in depth explanation block for Debug response
* duplicate code fix
* fixed some variable names
* Small move of variables
* Updated To Nested Debug Dictionary
fixed some issues with comments made in original PR
added more comments and small adjustments
got rid of "line item" in debug response
* Added notes to documentation
* Update docs/docs/app/barcode.md
adding matmirs comments
Co-authored-by: Matthias Mair <code@mjmair.com>
* Updated JSON plugin debug name
also added 'plugin_slug' variable
* fix style
* DNE style fix
* Style fix(again)
* Add unit tests
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
* Add CustomStatusSerializerMixin
- Caches custom status values
* Add unit test for PurchaseOrder model
* Implement changes for StockItemSerializer
* Implement changes for BuildOrder
* Fix unit test
* Bump API version
* Add serializer field type hint
* Tweak task offloading
- Improved function splitting
- Remove call to eval
* Read-only ScheduledTask admin
- Prevent admin users creating / editing / deleting scheduled tasks
* Add action for immediate trigger
* Prevent editing of UserSession via django admin
- Allow only read or delete
- No create or edit permissions
* Make StockTrackingAdmin read-only
* Reduce permission scope on common admin models
* Additional unit tests for task offloading
* Only superuser can change certain user fields
* Adjust unit test
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* Adjust default postgres connection settings
* Support tcp_user_timeout
* Set application name based on running context
* Add CONN_MAX_AGE and CONN_HEALTH_CHECKS
* Add connection timeout option for mysql
* Migrations
* Add to serializer
* Set the "creation_date" field to auto_now_add
* Ordering and filtering
* Add unit test
* Add "has_stocktake" filter
* Add test for data migration
* Additional unit tests for StockItem API endpoint
* Udpate API and CHANGELOG
* Add basic auto-allocate functionality
- backend code
- background task
- API endpoint
* Add new endpoint enum
* add frontend components
* Tweak auto-allocate output
* Allow specifying of individual line items
* Tweak error boundary
* Enable bulk-delete of allocated items against sales order
* Refactor stock sorting options
* Allow user to select how to handle serialized stock
* Backport new functionality to BuildOrder allocation
* Refactor sorting options to use enumerated values
* Implement functional unit tests for new feature
* Update API and CHANGELOG
* Additional unit test
* Add playwright testing
* Documentation
* Update docs for build auto-allocate
* Fix dependencies
* Adjust build line filtering
* Fix serializer
* Offload build output functions:
- cancel output
- scrap output
- complete output
Perform these in the background worker, and monitor for progress on the frontend.
* Refactor "build cancel"
- Offload expensive ops to background worker
* Offload build complete task
* Remove @atomic decorator from functions
- Allows operations to be performed "incrementally"
- If one task times out, the next task will get the rest
* Bug fix
* Bump API version
* Fix isInTestMode check
* Handle case where task returns immediately
* Fix docstring
* fix test_api
* Tweak order of operations
* additional unit testing for further coverage
* Adjust unit tests
* Offload order completion tasks
* Remove bad code
* Updated playwright test
* Robustify playwright tests
* Bump number of allowed queries
* Revert "Remove bad code"
This reverts commit 3a3ac3bdc7.
* Revert "Offload order completion tasks"
This reverts commit 6066dabe43.
* Add new global setting
* Update lock checks
* Bug fix for task comparison
* Update user interface
* Hide locked field if locking not enabled
* Update existing unit tests
* Update docs
* Add new Attachment model fields:
- is_image
- thumbnail
* Cache if the attachment is an image
* Add new setting for controlling max upload size
* Validate uploaded attachment file
* Add tqdm for progress bars
* Refactor migrations
- Don't need is_image field
- Can introspect from the thumbnail
* Data migration for existing attachments
* Bump API version
* Update tests and validators
* Add "is_image" field to the Attachment model
* Offload to background task
* Implement unit tests
* Docs
* Add unit test for data migration
* Additional unit test
* Omit migration tests from code coverage
* Additional unit tests
* initial skel commit for transfer orders
* initial transfer order backend model
* add some serializers, rename PLACED to ISSUED for TransferOrders
* adding from admin console works
* simple table list almost working, but we need to add order line items....
* add other cols to table
* add Transfer Order from table view
* moving towards a detail view
* wip: adding detail view
* add take from and destination serializer details
* add other detail grid items
* edit/duplicate transfer order
* more action buttons
* first crack at adding line items
* add to line item
* add filters
* starting work on row actions
* more action buttons for line items
* fix copy lines in duplicate
* basic allocation works
* allocations table actions
* allocate serials
* allocated serial row expansion
* add transferred qty to serializers
* move items on complete, show in tracking
* change panel to transferred stock upon complete
* allow incomplete line items
* disable edit allocations when completed
* add ref pattern and to settings
* add admin to line item inline
* add calendar and parametric view
* basic transfer order report
* add transfer order ruleset
* starting allocation buisness logic throughout for TOs
* disable accept incomplete logic, which was incorrect, until I fix
* fix incomplete allocation option
* add transferred col to default report
* add transfer order to calendar ics view
* chain condition for readability
* add transfer order allocations table to stockitem view
* don't account TO allocations in availability
* add transfer orders table for a part
* 'consume' option by doing take_stock
* squash migrations
* starting to test transfer order
* more transfer order tests
* add transfer order consume test
* wip, more tests
* more transfer order tests
* had to refresh_from_db
* switch "to" to "transfer-order" in url paths
* only select non-virtual parts from transfer order
* add transfer order docs
* deconflict migrations
* fix frontend build error
* fix validation on transfer order reference pattern
* add oath2 scope for transfer order
* fix state test to include transfer order state
* add barcode_model_type_code for transfer order
* bump api version
* check view role for transfer order, remove debug/commented out lines
* add serialized allocation test
* Fix migrations
* Frontend fixes
* Implement required 'company' attribute
* transfer order report context
* attempt to fix tests
* delete transfer order allocations on cancel
* add a few playwright tests, more incoming
* more playwright
* add source and destination locations to table
* deconflict migrations
* Fix build issue
* attempt to fix flaky transfer order test
* duplicate transfer order before running tests
* Adjust playwright tests
* Fix migration dependency order
---------
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
Co-authored-by: Matthias Mair <code@mjmair.com>
* Add API serializer for deleting a location
* Add serializer for part category delete
* Bump API version
* Fix unit tests
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* realign user API endpoints to make it clearer which one are only applicable to the current user
* fix name
* bump api
* fix test
* fix reference
* fix test exception
* update ref
* reduce breakage
* re-add legacy urls till next `breaking`
* Remove image download support
- Helper function remains (it is used in the supplier plugin mixin)
- No longer available to user
- Close massive security hole entirely
- Will be defunct soon anyway (moving to generic attachments)
* Update CHANGELOG.md
* Bump API version
* Fix for unit tests
* Implementation
* Update API and CHANGELOG
* Annotate response type
* Simplify attachment renaming
- Use the existing API endpoint
* Capture the actual saved path
* Tweak attachment table fields
* Use built-in validation
* Update docs
* Unit testing
* Ignore some lines from coverage
* Check if file exists before deleting
* Enhance: Auto-select items tab for final stock locations/categories
* Fix biome formatting in PanelGroup.tsx
* Change default setting to False per review
* Refactor: Rename setting to DISPLAY_ITEMS_FINAL_LEVEL to apply generically to both locations and categories per review
---------
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
* Refactor panel indicator dots
- Allow indicator status to be fetched async
* Add indicator dot for attachments
* Support parameters panel
* Refactor
- Expose more types to @lib
- Define new PanelIndicatorType type
- Support old interface
* Provide explicit user information to report context
* Pass user information through to offloaded task
* Pass user information back to the plugin
* Fix user passing
* Add more complex unit test for report printing
- Test debug ON / OFF
- Test merge ON / OFF
- Check generated data output
* Unit testing for label generation
* Further refactoring
- Remove "request" from printing context entirely
* Simplify argument drilling
* Robustify unit tests
* Refactor build order filters
- Common set of filters for build order views
* Refactor PurchaseOrder filters
* Update company table
* Refactor SalesOrder filters
* Refactor common filters
* Refactor ReturnOrder table filters
* Add new "raw_amount" field to BomItem model
* Batch process data migration
* Update migration
* Calculate 'quantity' from 'raw_amount' field
* Improve decimal formatting in migration
* Allow raw_amount in serializer
* Adjust frontend form
* API validation and unit tests
* Additional playwright tests
* Update API version and CHANGELOG
* Updated docs
* Fix docstring
* Better handling of empty values
* Tweak unit tests
* Tweak unit test
* Fix unit test
* Adjust form field text
* Adjust migration file
* Tweak playwright tests
* Fix unit test
* Adjust serializers / import-export / playwright
* Fix migration
* Fix validation
* Loosen comparison
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* Allow deletion of serialized build output
- If calling "delete_output" on a BuildOrder
- Only will delete an in_production output
- Ignore the global setting in this case
Co-authored-by: Copilot <copilot@github.com>
* Add unit test
Co-authored-by: Copilot <copilot@github.com>
---------
Co-authored-by: Copilot <copilot@github.com>
* Fix: preserve existing widget sizes when adding a dashboard widget
When adding a new widget from the drawer, addWidget called
updateLayoutForWidget with overrideSize=true on every existing layout
key. That flag forces w/h on every layout entry to the widget's
minWidth/minHeight, which silently reset all user-customised widget
sizes back to their minimums.
Pass overrideSize=false instead. Existing widgets retain their layout
entries (and therefore their user-set sizes); the newly added widget
has no entry yet, so react-grid-layout auto-places it at default size.
Adds a Playwright regression test that resizes a widget, adds a second
widget, and asserts the first widget's height is preserved.
* Make widget-resize regression test reliable
Replace the previous drag-based test with a deterministic check that
manipulates the persisted layout directly. The resize handles only
exist when isResizable={editing} is true, so the previous test's
attempt to grab .react-resizable-handle returned null in CI.
The new test inflates the first widget's layout entry in
localStorage, reloads to rehydrate zustand, then adds a second widget
via the menu and asserts the first widget retained its enlarged
dimensions. This directly exercises the addWidget code path without
needing edit mode or mouse simulation.
* Apply biome formatting
* Patch backend profile to inflate widget; fix unused non-null assertion
Updating localStorage was wiped out by observeProfile() on reload, so
inflate the widget on the backend user profile instead.
---------
Co-authored-by: tigger2000ttfn <tigger2000ttfn@users.noreply.github.com>
* Fix "issued_by" for BuildOrder model
- Automatically capture user information
- Mark field as read-only
- Remove from frontend forms
* Add "created_by" property
* Update unit test
* Update API and CHANGELOG
* Further adjustments to unit tests
* Adjust system settings
- Rearrange settings to match major menu groups
- Split long settings panels into separate lists
Co-authored-by: Copilot <copilot@github.com>
* Adjust playwright tests
---------
Co-authored-by: Copilot <copilot@github.com>
* Fix ApiFormFIeldType docstring
* Case fix
* Add sub-forms for company creation
* Tweak component def
* Add new company for manufacturer-part and supplier-part
* Create new parameter template directly from parameter view
* Add tooltip
* Add playwright tests
* Consolidate translation
* Revert to left side
* Fix title case
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* Ensure a new BOM item triggers check_bom_valid
* Ensure BOM validation is properly recomputed on a BOM item update
* Add unit tests
* Tweak unit tests
* Update 'clear_bom' method
* Move useFilterSet state to the @lib
* Refactor useTable hook into @lib
* Refactor string helper functions
* Refactor constructFormUrl func
* Refactor Boundary component
* Refactor StoredTableState
* More refactoring
* Refactor CopyButton and CopyableCell
* Pass table render func to plugins
* Provide internal wrapper function, while allowing the "api" and "navigate" functions to be provided by the caller
* Adds <InvenTreeTable /> component which is exposed to plugins
* Update frontend versioning
* Update docs
* Handle condition where UI does not provide table rendering function
* Move queryFilters out of custom state
* Fix exported type
* Extract searchParams
- Cannot be used outside of router component
- Only provide when the table is generated internally
* Bump UI version
* Fix for right-click context menu
- Function needs to be defined with the context menu provider
* move action to post endpoint
* use default return code
* remove custom permissions on notifications endpoint
* add api bump
* update link
* fix assertation
* fix test to use post - this was refactored
* Lazy evaluation of optional serializer fields
- Add OptionalField dataclass
- Pass serializer class and kwargs separately
* Refactor BuildLineSerializer class
* Simplify gathering
* Refactor BuildSerializer
* Refactor other Build serializers
* Refactor Part serializers
* Refactoring more serializers to use OptionalField
* More refactoring
* Cleanup for mixin class
* Ensure any optional fields we added in are not missed
* Fixes
* Rehydrate optional fields for metadata
* Add TreePathSerializer class
* Further improvements:
- Handle case where optional field shadows model property
- Consider read_only and write_only fields
* Adjust unit tests
* Fix for "build_relational_field"
- Handle case where optional field shadows model relation
* Fix case where multiple fields can share same filter
* additional unit tests
* Bump API version
* Remove top-level detection
- Request object is only available for the top-level serializer anyway
* Cache serializer to prevent multiple __init__ calls
* Revert caching change
- Breaks search results
* Simplify field removal
* Adjust unit test
* Remove docstring comment which is no longer true
* Ensure read-only fields are skipped for data import
* Use SAFE_METHODS
* Do not convert to lowercase
* Updated docstring
* Remove FilterableSerializerField mixin
- Annotation now performed using OptionalField
- Code can be greatly simplified
* Ensure all fields are returned when generating schema
* Fix order of operations
* Add assertion to unit test
* fix style
* Fix api_version
* Remove duplicate API entries
* Remove duplicate API entries
* Fix formatting in api_version.py
* Tweak ManufacturerPart serializer
* Revert formatting change
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* move to router based path building
* fix url names
* fix import
* fix test helper
* fix test
* more test fixes
* fix api response
* remove url patch
* bump api version
* reduce diff
* Fix version tag
* fix schema generation errors
* adjust texts
* fix tests
* add test for notification behavior / readakk
* add todo for wrong endpoint
* rename
* adjust docstring
* fix outstanding permission todo - this pattern should be changed in the API
* Add debugging info for background workers to the devcontainer docs
* Add debugging info the the EventMixin docs
* Add an option to set sync=True to launch.json
* Add search capability to selection list entry endpoint
* Use API lookup for selection entries
* Add renderer func
* Allow API filtering
* Fetch selectionentry data related to the selected data item
* remove now unneeded entry
* add missing modelinfo
* fix ref
* add api bump
* Provide optional single fetch function to API forms
- Useful if we need to perform a custom API call for initial data
* django-admin support for SelectionList
* Docstring improvements
* Apply 'active' filter
* Tweak api version entry
* Playwright tests
* Tweak docs wording
* Fix incorrect docstring
* Adjust playwright tests
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* Reduce verbosity of invoke tasks
- Suppress some django messages which are not useful to most users
- Verbosity can be added with --verbose flag
* Further improvements
* Better messaging
* Extra options
* No!
* Display filename pattern in template tables
* Add user update tracking to template models
* Update API / serializers
* Capture user information via API
* Display update information in tables
* Bump API version and CHANGELOG.md
* Prevent double increment of revision
* Fix
* [UI] Pass custom fields through to the importer session
* Support custom model rendering within the data import wizard
* Update CHANGELOG.md
* Update UI version
* Add "line number" field for external orders
* Updated serializers
* Add columns to UI tables
* Update form fields
* Adds API ordering
* Bump API version
* Update CHANGELOG.md
* Ensure the MeUserSerializer correctly marks fields as read-only
* Bump API version
* Add unit tests for the "me" endpoint
* Additional unit tests
* Add OPTIONS test
* fix(security): use SandboxedEnvironment for PART_NAME_FORMAT rendering
- Switch jinja2.Environment to jinja2.sandbox.SandboxedEnvironment in
part/helpers.py to prevent SSTI via template tags in PART_NAME_FORMAT.
- Set pk=1 on the dummy Part instance in the validator to ensure
conditional expressions like {% if part.pk %} are properly evaluated
during validation, closing the sandbox bypass vector.
Fixes GHSA-84jh-x777-8pqq
* Style fixes
---------
Co-authored-by: Paul <morimori-dev@github.com>
Co-authored-by: Oliver Walters <oliver.henry.walters@gmail.com>
* Add note to plugin docs.
* Adjust logic for PluginListTable
* Add superuser scope to PluginInstall API endpoint
* Update unit test for API endpoint
* Explicitly set PLUGINS_INSTALL_DISABLED if PLUGINS_ENABLED = False
* Check for superuser permission in installer.py
* Additional user checks
* Sanitize package name to protect against OS command injection
* Fix SSRF in remote image download
Add IP address validation to prevent Server-Side Request Forgery
when downloading images from remote URLs. The resolved IP is now
checked against private, loopback, link-local, and reserved ranges
before connecting.
Redirects are followed manually (up to 5 hops) with SSRF validation
at each step, preventing redirect-based bypass of URL format checks.
* Style fix
---------
Co-authored-by: tikket1 <chrisveres1@gmail.com>
* Refactor ImporterDrawer
- Use a single, globally accessible object
- Provide global state management
* Expose global importer state to the plugin interface
* Improve registration of data import serializers
* Update frontend version / docs
* Bump API version
* docs: add more details around staff / superuser roles and their dangers
* make clear that staff users are dangerous
* make distinction clearer in API
* add error code and frontend warning about running with staff / admin user
* fix test
* bump api
* adapt banner warning
* make banner locally disableable
* add global option to disable elevated user alert
* Prevent creation of PluginConfig during migrations
* Refactor data import process
- Split into multiple separate steps
* Load plugins during data load / dump
- Required, otherwise we cannot dump the data
* Refactor export_records
- Use temporary file
- Cleanup docstring
* Force apps check on second validation step
* Improve import sequencing
* Update CI script
* Update migration docs
* CI pipeline for running import/export test
* Fix workflow naming
* Fix env vars
* Add placeholder script
* Fix matrix env vars
* Fix missing env var
* Install required packages
* Fix typo
* Tweak tasks.py
* Install dummy plugin as part of the
* Updated CI workflow
* Validate exported data
* Additional CI process
* Log mandatory plugins to INFO
* Force global setting
* Refactor CI pipeline
* Tweak file test
* Workflow updates
* Enable auto-update
* Test if import/export test should run
* Trigger if tasks.py changes
* Add 'parameter' support for SalesOrderShipment model
* Add "parameters" tab for shipment view
* Playwright test
* Update CHANGELOG
* Update API version
* Install gettext
* Try yaml format
* Revert "Try yaml format"
This reverts commit 394a5551c8.
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* Update "date" field for StockItemTestResult
- Allow editing of date (via admin)
* Mark 'date' and 'user' as read-only unless importing
* Revert API field name
* Fix default value
* Fix migration
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* Add management command to list installed apps
* Add metadata to exported data file
* Validate metadata for imported file
* Update CHANGELOG.md
* Update docs
* Use internal codes
* Refactor and add more metadata
* Adjust github action workflow
* Run with --force option to setup demo dataset
* Handle receive of virtual parts
- Update line item quantity
- Do not add any stock
* Add unit test
* Additional unit test
* UI form improvements
* Add playwright test
* Updated playwright tests
* Fix order of hooks for stabilizing table columns
Ref: https://github.com/icflorescu/mantine-datatable/issues/759
* Reset column ordering and widths when the component is mounted
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* Added keep open boolean field to Stock Location modal form
* Rewrite keep form open field feature to avoid calling methods in form field definitions
* Rewrite keep form open feature as common form property
* Removed unused artefact from previous implementation
* keepOpenOption removed as default option for all create forms. Instead it's enabled on selected forms.
* keepOpenOption field speed improvement
- using useRef instead of useState
- keepOpenSwitch moved to own component
* Added keep form open feature to changelog
* Updated documentation: keep form open feature added to concepts/user_interface docs
* Added test case for "keep form open" feature
* Changed switch selector in keep form open feature test
---------
Co-authored-by: spm <jan.krajdl@cecolo.com>
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
Co-authored-by: Matthias Mair <code@mjmair.com>
* Update DataExport functionality
- Chunk queryset into memory
* Allow larger number of queries for chunked database fetching
* Handle possible exception in unit testing
* Restrict queryset for DataImportSession
- Only allow non-staff users to see their own sessions
* Add unit test
* raise PermissionDenied if no user info available
* Fixed issue where importing data from older versions of InvenTree+Postgres would fail
* Update tasks.py
Changed .startswith to exact matching for users.userprofile.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update tasks.py
Added validation checks to user primary key pairing dict.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Reverted tasks.py, disabled signals in user model when importing data
---------
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Refactoring for media file report helper functions
* Updated unit tests
* Improved error handling
* Generic path return for asset
* Fix return type annotations
* Fix existing test
* Tweaked unit test
* Collect static files in CI
* Run static step for all DB tests
* Update action.yaml
* Fix for action.yaml
* Updated unit tests
* Improvements for get_bulk_queryset
- Limit scope to base view queryset
- Remove ability to provide arbitrary filters
- Remove feedback if zero items are found
* Adjust unit test
* Remove filter test
* Update CHANGELOG.md
* Add helper to check the existence of a static file
* Log error if plugin static file does not exist
* Support cache busting for plugin files
* Use Pathlib instead
* Improve generic URL resolution
* Add unit test
* bump ty - there is better django support now
* more fixes
* fix usage of types
* add missing type
* fix access
* ensure itteration is safe
* fix uncombat decimal usage
* ?potential breaking: change access key
* remove now obsolete igtnore
* ignore errors on StdImageField
* remove usage of unkonw parameter
* fix diff error
* fix schema creation
* fix coverage quirk
* those are unneeded now?
* this seem to have been an issue with 3.12; not occuring on 3.14
* ignore pydantiics
* ignore edge cases for now
* include isGenerating fix
* make typing python 3.11 compatible
* fix more errors
* fix(plugin): use app_name instead of plugin_path when deregistering models
_deactivate_mixin uses plugin_path (the full dotted module path) as the
key into Django's apps.all_models when removing plugin models during
reload. However, Django registers models under the app_label (the short
app_name), not the full plugin_path.
For plugins with nested module paths (e.g. "myplugin.myplugin"),
plugin_path != app_name. Since apps.all_models is a defaultdict, looking
up plugin_path silently creates an empty OrderedDict, then .pop(model)
raises KeyError because the model was never in that dict — it was
registered under app_name.
This causes recurring KeyError crashes every plugin reload cycle
(~1 minute) for any external plugin with a nested package structure.
The fix:
- Use app_name (already computed at line 98) instead of plugin_path
- Add default None to .pop() for defensive safety
- Consistent with line 123 which already correctly uses app_name
* test(plugin): add unit test for nested plugin path model deregistration
Ensures _deactivate_mixin uses app_name (last path component) instead
of the full plugin_path when looking up models in apps.all_models,
preventing KeyError for external plugins with nested module structures.
* style: fix ruff format for context manager parenthesization
* Fix complete_sales_order_shipment task
- Perform allocation *before* marking shipment as complete
- Ensure task is not marked as complete before it is actually done
* Add unit test
* Provide task status tracking for shipment completion
* Add integration testing
* Address unit test issues
* Bump API version
* Enhance playwright test
* Add new build task
* Refactor background task for consuming build stock
- Run as a single task
- Improve query efficiency
* Refactor consuming stock against build via API
- Return task_id for monitoring
- Keep frontend updated
* Task tracking for auto-allocation
* Add e2e integration tests:
- Auto-allocate stock
- Consume stock
* Bump API version
* Playwright test fixes
* Adjust unit tests
* Robustify unit test
* Widen test scope
* Adjust playwright test
* Loosen test requirements again
* idk, another change :|
* Robustify test
* Enhance docstring
* Return the ID of an offloaded task
* Add API endpoint for background task detail
* Add UI hook for monitoring background task progress
* Handle queued tasks (not yet started)
* Improve UX
* Update frontend lib version
* Bump API version
* Fix notification
* Simplify UI interface
* Implement internal hook
* Fix API path sequence
* Add unit tests for task detail endpoint
* Refactor code into reusable model
* Explicit operation_id for API endpoints
* Further refactoring
* Use 200 response code
- axios does not like 202, simplify it
* Return task response for validation of part BOM
* Fix schema
* Cleanup
* Run background worker during playwright tests
- For full e2e integration testing
* Improve hooks and unit testing
* Rename custom hooks to meet react naming requirements
* [bug] Users cannot create their own API tokens
Fixes#11486
* fix detection of metadata
* make easier to read
* add handler for IsAuthenticated
* use correct method
* fix style see #11487
* add frontend test
* make test more reliable?
Required for label printing - pdf2image cannot convert PDFs to images without poppler's pdfinfo binary being present on the system.
Co-authored-by: Justyn Bell <justyn.bell@subinitial.com>
* Enhance MonitorDataOutput
- Optionally pass QueryClient
- Required when running outside of <ApiContext />
* Fix default base URL if not specified
* Remove "allow_null" from Mantine props
* Bump lib version to 0.8.2
* Bump CHANGELOG.md
When the plugin registry reloads during an active HTTP request,
create_default_labels() raises ValidationError on duplicate template
inserts. On PostgreSQL this aborts the entire outer atomic() block,
causing TransactionManagementError on all stock operations in that request.
Fixes#11469
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
* Copy parameters when duplicating an order
* Add unit test for order parameter duplication
* Bunmp API version
* Fix test reliability
* Disable image fetching for SampleSupplierPlugin
- Allow turning on manually
- Prevent CI issues due to rate limiting
* Revery pypdf.. ???
* re-enable codspeed
* fix style
* use 2 step check
* use more verbose syntax
* run performance even if not needed otherwise
* fix possible injection
* another possible injection
* fix syntax
* run python api instead of backend perf test forced
* only submit tests when running in correct enviroment
* Add unit test to detect unreliable pagination
* Enforce PK field ordering
- Append 'pk' ordering to InvenTreeOrderingFilter
* Use our ordering filter everywhere
* Simplify ordering options
* Enforce list
* Use last term for ordering checks
* Individual delete to fix mysql issue
* add "updated_at" field to PurchaseOrder model
* change to use abstract po instead
* add api filters
* add show, order and filter by po updated_at date to frontend
* add tests and increment api_version
* change updated_at to null by default
* never trust github conflict resolution
* bump docker image to python 3.14 (#11414)
* chore(deps): bump the dependencies group across 1 directory with 4 updates (#11416)
Bumps the dependencies group with 4 updates in the / directory: [depot/setup-action](https://github.com/depot/setup-action), [depot/build-push-action](https://github.com/depot/build-push-action), [anchore/sbom-action](https://github.com/anchore/sbom-action) and [actions/stale](https://github.com/actions/stale).
Updates `depot/setup-action` from 1.6.0 to 1.7.1
- [Release notes](https://github.com/depot/setup-action/releases)
- [Commits](b0b1ea4f69...15c09a5f77)
Updates `depot/build-push-action` from 1.16.2 to 1.17.0
- [Release notes](https://github.com/depot/build-push-action/releases)
- [Commits](9785b135c3...5f3b3c2e5a)
Updates `anchore/sbom-action` from 0.21.1 to 0.22.2
- [Release notes](https://github.com/anchore/sbom-action/releases)
- [Changelog](https://github.com/anchore/sbom-action/blob/main/RELEASE.md)
- [Commits](0b82b0b1a2...28d71544de)
Updates `actions/stale` from 10.1.1 to 10.2.0
- [Release notes](https://github.com/actions/stale/releases)
- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)
- [Commits](997185467f...b5d41d4e1d)
---
updated-dependencies:
- dependency-name: depot/setup-action
dependency-version: 1.7.1
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: dependencies
- dependency-name: depot/build-push-action
dependency-version: 1.17.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: dependencies
- dependency-name: anchore/sbom-action
dependency-version: 0.22.2
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: dependencies
- dependency-name: actions/stale
dependency-version: 10.2.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: dependencies
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* [UI] Copy cells expansion (#11410)
* Prevent copy button if copy value is null
* Add "link" columns to order tables
* Support copy for default column types
* Tweak padding to avoid flickering issues
* Refactor IPNColumn
* Adjust visual styling
* Copy for SKU and MPN columns
* Add more copy columns
* More tweaks
* Tweak playwright testing
* Further cleanup
* More copy cols
* Fix auto pricing overwriting manual purchase price #10846 (#11411)
* Fix auto pricing overwriting manual purchase price #10846
* Added entry to api_version.py
---------
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
* [UI] Default locale (#11412)
* [UI] Support default server language
* Handle faulty theme
* Add option for default language
* Improve language selection
* Brief docs entry
* Fix typo
* Fix yarn build
* Remove debug msg
* Fix calendar locale
* feat(backend): ensure restore of backups only works in correct enviroments (#11372)
* [FR] ensure restore of backups only works in correct enviroments
Fixes#11214
* update PR nbr
* fix wrong ty detection
* fix link
* ensure tracing does not enagage while running backup ops
* fix import
* remove debugging string
* add error codes
* add tests for backup and restore
* complete test for restore
* we do not need e2e on every matrix entry
there is no realy db dep here
* fix changelog format
* add flag to allow bypass
* update CHANGELOG.md
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
Co-authored-by: Matthias Mair <code@mjmair.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: JustusRijke <53965859+JustusRijke@users.noreply.github.com>
* [FR] ensure restore of backups only works in correct enviroments
Fixes#11214
* update PR nbr
* fix wrong ty detection
* fix link
* ensure tracing does not enagage while running backup ops
* fix import
* remove debugging string
* add error codes
* add tests for backup and restore
* complete test for restore
* we do not need e2e on every matrix entry
there is no realy db dep here
* fix changelog format
* add flag to allow bypass
* Prevent copy button if copy value is null
* Add "link" columns to order tables
* Support copy for default column types
* Tweak padding to avoid flickering issues
* Refactor IPNColumn
* Adjust visual styling
* Copy for SKU and MPN columns
* Add more copy columns
* More tweaks
* Tweak playwright testing
* Further cleanup
* More copy cols
* Support "default filters" for table views
- User overrides apply in preference
- Only when there is no stored value (null)
* Correctly handle partially constructed filters
- Reverse lookup on available filter set
* Add default filters for order tables
* Default filters for company tables
* More default filters
* Add some more default filters
* Bump CHANGELOG
* build fix
* Tweaks for playwright testing
* Tweak playwright test
* Improve test flexibility
* Add custom logo and splash to playwright fixtures
* Render custom logo in frontend
* Add playwright tests for customization settings
* Separate playwright run for customization
* Update ci file
* Update playwright config file
* Do not call get_custom_file from withing settings.py
- django app not fully initialized yet
- can cause loops
* Disable default tests (for now)
* Re-enable normal tests
* Update qc checks
* Order of operations?
* Debug output
* Use env
* Add more debug info
* More debug
* Further debug
* Add collectstatic check
* Run normal tests too
* Remove debug prints
* make INVENTREE_WEB_PORT more usefull
* Update contrib/container/docker-compose.yml
Co-authored-by: Philipp Fruck <dev@p-fruck.de>
* revert change
* Fix indentation for environment variable in docker-compose
---------
Co-authored-by: Philipp Fruck <dev@p-fruck.de>
* Add "primary" field to SupplierPart model
* Remove "default_supplier" field from the Part model
* Ensure only one SupplierPart can be "primary" for a given Part
* Update references to "default_supplier"
* Add 'primary' field to the SupplierPart API serializer
* update SupplierPart table
* Use bulk-update operations
* Bug fix for data migration
* Allow ordering by 'primary' field
* Tweak import message
* Edit 'primary' field in UI
* Fix checks in save() methods
* Better table updates
* Update CHANGELOG
* Bump API version
* Fix unit test
* Add unit test for API
* Playwright tests
* Data import flexibility
- Allow specification of alternative lookup fields for data import
* Observe field filters during data import
* Add alternative import fields for Part models
* More options for IMPORT_ID_FIELDS
* Update src/backend/InvenTree/importer/models.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Bump CHANGELOG
* Handle empty input values
* Add IMPORT_ID_FIELDS for more models
* PK field takes highest priority
* Update import docs
* Tweak return type
* Handle multiple date formats
* Add playwright testing
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Enhanced filtering for parameter templates
- Allow filtering by model ID as well as model type
* Enhanced filtering for ParameterTemplate
- Required for the parameteric data tables
- Enable filtering by base model ID
- Enable filtering by related model ID
* Bump API version
* Remove outdated comments
* Fix typo
* Remove debug statement
* Added unit tests
* Playwright tests
* Fix unit test
* Bump requirements
* Revert
* Prevent migration check if performing DB update operations
* Prevent settings write during data imports
* Prevent exchange rate update during migration processes
* Allow exchange rate updates during tests or shell session
* invoke command updates
- wait for db before migrating data
- improve task state reporting
- early return from isGeneratingSchema
* Disable warning message (for now)
* Fix typo
- This caused large delay when restoring data
* Remove debug statement
* Add warning message if isGeneratingSchema called falls through unexpectedly
* Bump version number to 1.2.0 (#11299)
* Bump version number to 1.2.0
* Update CHANGELOG.md
* Update base image in Dockerfile
Updated base image to the latest version as of 2026-02-12.
* Fix for devcontainer build (#11311) (#11312)
- Install yarn a different way
(cherry picked from commit 2a613809ec)
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
---------
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Add spotlight action to navigate to data import screen
* Hide barcode action if disabled
* Sort actions
* Make spotlight scrollable
* Docs for spotlight
* add better tracing through the frontend
* extend allowed headers
* add endpoint to end the trace
* end traces correctly in backend
* end trace
* early cop-out if not tracing is enabled
* Update API version link for v447
* Add "install_into_detail" to BuildItem serializer
* Enhance the "resolveItem" function
* Add "StockColumn" renderer
* Fix output column for BuildAllocatedStockTable
* Replace column in stock item table
* More column refactoring
* Bump API version
* Add InvenTreeOutputOption descriptions
* Prefetch for better API performance
* Updated playwright testing
* Additional filtering options for stock list
* Fix ordering for stock table
* Ordering fix for build order table
* Ordering for supplier parts and manufacturer parts
* SalesOrderLineItem: Order by IPN
* ReturnOrderLineItem table:
- Order by part name
- Order by part IPN
* Update API version to 451
Increment API version to 451 and update changelog.
* Add playwright tests for column sorting
* Add backend tests for API ordering
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* Data migrations for StockItemTracking
- Propagate the 'part' links
* Enable filtering of stock tracking entries by part
* Enable filtering by date range
* Display stock tracking for part
* Table enhancements
* Bump API version
* Display stock item column
* Ensure 'quantity' is recorded for stock tracking entries
* Add new global settings
* Adds background task for deleting old stock tracking entries
* Docs updates
* Enhanced docs
* Cast quantity to float
* Rever data migration
* Ensure part link gets created
* Improved prefetch for API
* Playwright testing
* Tweak unit test thresholds
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* Allow part queryset to be passed to 'perform_stocktake' function
* Add new options to perform_stocktake
* Allow download of part stocktake snapshot data
* API endpoint for generating a stocktake entry
* Simplify code
* Generate report output
* Dashboard stocktake widget
- Generate stocktake snapshot from the dashboard
* Force stocktake entry for part
* Add docs
* Cleanup docs
* Update API version
* Improve efficiency of stocktake generation
* Error handling
* Add simple playwright test
* Fix typing
* add more debugging and remove possible problematic inheritance
* remove unused functions
* remove extra conversion
* ensure cirrect type is used
---------
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
* [API] Allow sorting of test results by start/finish time
- Bring API in line with UI expectation
* Bump API version
* Allow ordering by "test_station" field
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* [UI] Fix datetime field
- Fixes bug in UI which prevented "datetime" fields from working
- Specifically, the "time" portion was removed and set to 00:00
* Display seconds
* Added "allocated_lines" to the backend and frontend tables
* Remove incorrectly added UI panels from Sales Order Detail
* bump api version
---------
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
* small refactor
* add inventree vendor extension
* bump api version
* Add control over schema to settings
* add more details
* disable config as requested
* adjust 3.14 diff
* cleanup diff
* add docs on the new feature
* revert bumping of api version - there is no cahnge by default
* feat: matrix testing
* remove unneeded args
* remove hashes for now
* remove require-hashes for now
* try manually fixing cffi for now
* remove wrong cache syntax
* remove cache for now
* move to 3.14?
* make version specific install req
* re-add hashes
* Revert "remove require-hashes for now"
This reverts commit 7a7e12130a.
* also compile requirements-dev
* move more install commands
* fix generation setting
* more logging
* remove cache exception
* remove cffi fix
* remove hash inforcement for now
* remove dev for now
* default to 3.14 to val
* Revert "default to 3.14 to val"
This reverts commit 7a28e46604.
* fix constraints
* remove pin requirement from plugins.txt
* do not use uv for now
* do not use uv for now
* fix test file format
* revert small change
* use 3.14 for benchmarks
* keep tests on 3.11
* use invoke for install
* try 3.14 for performance testing again
* prolong time for slower CI on 3.14
* adjust dep versions
* Keep performance ci on 3.12
Updated the Python version in the QC checks workflow.
* match custom status tracking entry in edit
* add old_status to stockitemtracking
* test old_status tracking
* use vars for readability
* split custom status test
* move custom status from fixture to setup
* add old status to tracking table
* fallback to logical status if custom removed
* avoid shared deltas reference in loop
* track old status in stock add/remove/count/transfer
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* Add a explicit confirm when MFA Enforcing is turned on
https://github.com/inventree/InvenTree/issues/10754
* add error boundary for the case of a login enforcement
* ensure registration setup is redirected to
* fix auth url
* adjust error boundary
* update test
* be more specific in enforcement flow
* ensure we log the admin also out immidiatly after removing all mfa
* small cleanup
* sml chg
* fix execution order issues
* clean up args
* cleanup
* add test for mfa change logout
* fix IP in test
* add option to require an explicit confirm
* adapt ui to ask before patching
* bump API version
* reduce noise in docker
* refactor path infos
* add more info during local frontend build
* add frontend info during release build
* ignore "special" import
* change var name
* Improve prefetching
* Cache user groups for permission check
* Use a GET request to execute search
- Prevent forced prefetch
- Reduce execution time significantly
* Fix group caching
* Improve StockItemSerializer
- Select related for pricing_data rather than prefetch
* Add benchmarking for search endpoint
* Adjust prefetch
* Ensure no errors returned
* Fix prefetch
* Fix more prefetch issues
* Remove debug print
* Fix for performance testing
* Data is already returned as dict
* Test fix
* Extract model types better
* Matmair/issue10740 (#497)
* reduce noise in docker
* refactor path infos
* add more info during local frontend build
* add frontend info during release build
* Revert "Matmair/issue10740 (#497)" (#498)
This reverts commit 415c52813b.
* bum pre-commit and update to new formatting rule
* fix style
* Add parameter support for StockLocation model
* Serialize parameters for stock location
* Frontend support
* Bump API version
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* replace individual metadata endpoints with a generic endpoint an a lot of permanent redirects
* remove more names
* reduce duplication more
* remove now unneeded tests
* update remaining tests to use urls
* bump api
* follow redirects in tests
* reduce new fncs
* fix redirect setup
* fix test
* update to fix schema collissions
* fix permission check
* simplify and fix lookup
* clone fork for now
* add changelog entry
* update api version date
* remove temporary change to python lib
* update docs
* Matmair/issue10740 (#497)
* reduce noise in docker
* refactor path infos
* add more info during local frontend build
* add frontend info during release build
* Revert "Matmair/issue10740 (#497)" (#498)
This reverts commit 415c52813b.
* use walltime
* switch measure mode
* dummy change
* dummy change
* ensure npm works
* pin needed version
* split out performance test to also use walltime
* roll back split, is too slow
---------
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
* Only look at query_params for top-level serializers
- Nested serializers should *not* look at query params
* Prevent all fields when exporting data
* Add unit test for large dataset export
* Fix code
* Pass through via context rather than primary kwarg
* Fix for file download
* Ensure request is passed through to the serializer
* ensure query params are passed through when exporting data
* Fix code comment
* Fix for unit test helper func
* Increase max export time
* change screenshot for plugin install to PUI
* Correct location of gunicorn config in docs
* Add more details to plugin installation doc
* remove unused file
* feat(backend): add performance test
ref #11002
* feat(backend): add performance test (#486)
* chore(deps): bump the dependencies group across 1 directory with 2 updates (#11003)
* chore(deps): bump the dependencies group across 1 directory with 2 updates
Bumps the dependencies group with 2 updates in the /src/backend directory: [django-q2](https://github.com/GDay/django-q2) and [sentry-sdk](https://github.com/getsentry/sentry-python).
Updates `django-q2` from 1.8.0 to 1.9.0
- [Release notes](https://github.com/GDay/django-q2/releases)
- [Changelog](https://github.com/django-q2/django-q2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/GDay/django-q2/compare/v1.8.0...v1.9.0)
Updates `sentry-sdk` from 2.46.0 to 2.47.0
- [Release notes](https://github.com/getsentry/sentry-python/releases)
- [Changelog](https://github.com/getsentry/sentry-python/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-python/compare/2.46.0...2.47.0)
---
updated-dependencies:
- dependency-name: django-q2
dependency-version: 1.9.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: dependencies
- dependency-name: sentry-sdk
dependency-version: 2.47.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: dependencies
...
Signed-off-by: dependabot[bot] <support@github.com>
* fix style
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Matthias Mair <code@mjmair.com>
* Rearrange python package installs in are metal setup (#11005)
* Reorder pip installation steps in bare metal setup
* Reorder pip installation steps in bare metal setup
* remove unused lines
* Fix docs formatting (#11008)
* Remove prefetch_related from parametric data filter (#11007)
- Not required as we do not process the parameter fields in python
* [refactor] Generic status API (#11009)
* Fix docs formatting
* [refactor] cache custom states
- Generic state API endpoint executed query for each state type
- We can run a single database query and cache these in memory
- Reduces query time by ~50%
* [refactor] Build list (#11010)
- Prefetch project_code
- Annotate parameter data
* Improve the documentation installation instructions. (#11011)
Co-authored-by: Mitch Davis <mjd@afork.com>
* [refactor] Improve primary_address annotation for Company API (#11006)
* Refactor primary_address annotation
- Remove SerializerMethodField
- Better cache introspection
* Allow address detail to be optional
* Refactor address caching
* Fix primary_address annotation
* Remove "address_count" field
- Pointless annotation which is not used anywhere
* Update API version
* Tweak docs page
* Tweak unit tests
* feat(backend): add performance test
ref #11002
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Michael <michael@buchmann.ruhr>
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
Co-authored-by: Mitch Davis <mjd+github@afork.com>
Co-authored-by: Mitch Davis <mjd@afork.com>
* add oidc perm
* fix run setup
* add gitignore
* pin action
* enable DB for test
* patch test detection
* move test argument into tasks
* seperate performance testing into own step
* add automigration
* update test
* Increase MAX_QUERY_TIME to 60 seconds
* use newer python for better prerformance / measurement options
* skip plugin install step
* add debug step
* add debug stmt
* make version import safe
* fix command
* more debugging
* move import
* rollback changes
* do full install
* rollback skip_plugins too
* hide version
* new debug try
* add more debug
* try 3.13
* try reinstalling the cffi
* reinstall cffi?
* reset debug
* rollback debug steos
* add initial tests
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Michael <michael@buchmann.ruhr>
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
Co-authored-by: Mitch Davis <mjd+github@afork.com>
Co-authored-by: Mitch Davis <mjd@afork.com>
* Improve prefetch fields for API
* Cache ContentType queryset for getModelsWithMixin
- Called a LOT of times for an options request
- Store the list in the session cache
- Much faster than redis - and expires after the session is complete
* Skip optional prefetch for options requests
* Custom implementation of DjangoModelPermission
- Cache the queryset against the view
- Prevents multiple hits for OPTIONS request
- Saves > 100ms on /stock/ options request
* Optimize printing actions
- Don't fire API request until dialog is opened
- This prevents a lot of unnecessary API calls from the UI
* Do not fire export options query until required
* Automatic prefetch of related fields for enable_filter
- Allows us to *not* prefetch fields (expensive) when they are not going to be used
- Enables re-usable components for common detail fields
* Refactor "project_code_detail" filter into common component
- Automatically apply correct prefetch fields
* Refactor 'parameters' annotation
- add 'enable_parameters_filter' function
- Prefetch parameters only when needed
- Refactor / consolidate code
* Refactor SupplierPartSerializer
- Make fields switchable
- Ensure correct prefetch_related
* Refactor serializer for ManufacturerPart
* Refactor BuildSerializer
* Refactor PurchaseOrderSerializer
* Refactor SalesOrderSerializer
* Refactor ReturnOrderSerializer
* Remove debug statements
* Tweaks
* Simplify custom filterable fields
* Bump API version
* Fix for data export
* Additional unit tests
* Remove unused "prefetch_func" option
* Refactor PurchaseOrderLineItemList
* Refactor SalesOrderLineItemList
* Refactor ReturnOrderLineItem
* Cleanup "pretty_name"
* Fix for build list
* Refactoring StockItem API endpoint
- Needs significant work still
* Refactoring for BuildLineSerializer
* Keep all optional fields when exporting data
* Improve "UserRoles" API endpoint
- Prefetch roles
- Prevents significant number of db hits
* Prefetch Parameter API list
* Bug fix for exporting logic
* Specify InvenTreeOutputOption
* Optional prefetch for primary_address
* Fix typing
* Fix unit test
* fixes for playwright tests
* Update Part API
- Improved prefetching
* Fix for prefetch
* Refactor primary_address annotation
- Remove SerializerMethodField
- Better cache introspection
* Allow address detail to be optional
* Refactor address caching
* Fix primary_address annotation
* Remove "address_count" field
- Pointless annotation which is not used anywhere
* Update API version
* Tweak docs page
* Tweak unit tests
* Fix docs formatting
* [refactor] cache custom states
- Generic state API endpoint executed query for each state type
- We can run a single database query and cache these in memory
- Reduces query time by ~50%
* Add barcode buttons to related fields
- Only field types which support barcodes
* Add per-user settings for barcode support
* Fill form field with scanned data
* Updated docs
* Fix duplicate setting
* Add playwright tests
* Fix duplicate setting in docs
* Fix broken link
* Fix memo deps
* Fix typo
* Remove setting
* Updated playwright tests
* Improved typing
* Enable input controls in PDF reports
Modify options passed to WeasyPrint.
* Changelog update for issue #10969.
* Add usage notes for PDF forms to report docs (#10969).
* Fix for string form fields
- replace null values with empty strings
* Expose more serializer metadata
* Check if null values are not allowed
* Fix type
* Try removing feature
* Reduce deltas
* Remove extra field attrs entirely (for testing)
* Comment out changes
* Tweak form values
* Fix for form validation
* Update version checks:
- Add error code for old python version
- Fix min python version in docs
- Various spelling fixes in docs
* Fix docs link
* Revert change to docs version string
* Bug fix
* Add ParameterTemplate model
- Data structure duplicated from PartParameterTemplate
* Apply data migration for templates
* Admin integration
* API endpoints for ParameterTemplate
* Scaffolding
* Add validator for ParameterTemplate model type
- Update migrations
- Make Parameter class abstract (for now)
- Validators
* API updates
- Fix options for model_type
- Add API filters
* Add definition for Parameter model
* Add django admin site integration
* Update InvenTreeParameterMixin class
- Fetch queryset of all linked Parameter instances
- Ensure deletion of linked instances
* API endpoints for Parameter instances
* Refactor UI table for parameter templates
* Add comment for later
* Add "enabled" field to ParameterTemplate model
* Add new field to serializer
* Rough-in new table
* Implement generic "parameter" table
* Enable parameters for Company model
* Change migration for part parameter
- Make it "universal"
* Remove code for ManufacturerPartParameter
* Fix for filters
* Add data import for parameter table
* Add verbose name to ParameterTemplate model
* Removed dead API code
* Update global setting
* Fix typos
* Check global setting for unit validation
* Use GenericForeignKey
* Add generic relationship to allow reverse lookups
* Fixes for table structure
* Add custom serializer field for ContentType with choices
* Adds ContentTypeField
- Handles representation of content type
- Provides human-readable options
* Refactor API filtering for endpoints
- Specify ContentType by ID, model or app label
* Revert change to parameters property
* Define GenericRelationship for linking model
* Refactoring some code
* Add a generic way to back-annotate and prefetch parameters for any model type
* Change panel position
* Directly annotate parameters against different model serializers
* remove defunct admin classes
* Run plugin validation against parameter
* Fix prefetching for PartSerializer
* Implement generic "filtering" against queryset
* Implement generic "ordering" by parameter
* Make parametric table generic
* Refactor segmented panels
* Consolidate part table views
* Fix for parametric part table
- Only display parameters for which we know there is a value
* Add parametric tables for company views
* Fix typo in file name
* Prefetch to reduce hits
* Add generic API mixin for filtering and ordering by parameter
* Fix hook for rebuilding template parameters
* Remove serializer
* Remove old models
* Fix code for copying parameters from category
* Implement more parametric tables:
- ManufacturerPart
- SupplierPart
- Fixes and enhancements
* Add parameter support for orders
* Add UI support for parameters against orders
* Update API version
* Update CHANGELOG.md
* Add parameter support for build orders
* Tweak frontend
* Add renderer
* Remove defunct endpoints
* Add migration requirement
* Require contenttypes to be updated
* Update migration
* Try using ID val
* Adjust migration dependencies
* fix params fixture
* fix schema export
* fix modelset
* Fixes for data migration
* tweak table
* Fix for Category Parameters
* Use branch of demo dataset for testing
* Add parameteric build order table
* disable broken imports
* remove old model from ruleset
* correct test
* Table tweaks
* fix test
* Remove old model type
* fix test
* fix test
* Refactor mixin to avoid specifying model type manually
* fix test
* fix resolve name
* remove unneeded import
* Tweak unit testing
* Fix unit test
* Enable bulk-create
* More fixes
* More unit test tweaks
* Enhancements
* Unit test fixes
* Add some migration tests
* Fix admin tests
* Fix part tests
* adapt expectation
* fix remaining typecheck
* Docs updates
* Rearrange models
* fix paramater caching
* fix doc links
* adjust assumption
* Adjust data migration unit tests
* docs fixes
* Fix docs link
* Fixes
* Tweak formatting
* Add doc for setting
* Add metadata view for parameters
* Add metadata view for ParamterTemplate
* Update CHANGELOG file
* Deconflict model_type fields
* Invert key:value
* Revert "Invert key:value"
This reverts commit d555658db2.
* fix assert
* Update API rev notes
* Initial unit tests for API
* Test parameter create / edit / delete via the API
* Add some more unit tests for the API
* Validate queryset annotation
- Add unit test with large dataset
- Ensure number of queries is fixed
- Fix for prefetching check
* Add breaking change info to CHANGELOG.md
* Ensure that parameters are removed when deleting the linked object
* Enhance type hinting
* Refactor part parameter exporter plugin
- Any model which supports parameters can use this now
- Update documentation
* Improve serializer field
* Adjust unit test
* Reimplement checks for locked parts
* Fix unit test for data migration
* Fix for unit test
* Allow disable edit for ParameterTable
* Fix supplier part import wizard
* Add unit tests for template API filtering
* Add playwright tests for purchasing index
* Add tests for manufacturing index page
* ui tests for sales index
* Add data migration tests for ManufacturerPartParameter
* Pull specific branch for python binding tests
* Specify target migration
* Remove debug statement
* Tweak migration unit tests
* Add options for spectacular
* Add explicit choice options
* Ensure empty string values are converted to None
* Don't use custom branch for python checks
* Fix for migration test
* Fix migration test
* Fix reference target
* Remove duplicate enum in spectactular.py
* Add null choice to custom serializer class
* [UI] Edit shipment details
- Pass "pending" status through to the form
* New migration strategy:
part.0144:
- Add new "enabled" field to PartParameterTemplate model
- Add new ContentType fields to the "PartParameterTemplate" and "PartParameter" models
- Data migration for existing "PartParameter" records
part.0145:
- Set NOT NULL constraints on new fields
- Remove the obsolete "part" field from the "PartParameter" model
* More migration updates:
- Create new "models" (without moving the existing tables)
- Data migration for PartCataegoryParameterTemplate model
- Remove PartParameterTemplate and PartParameter models
* Overhaul of migration strategy
- New models simply point to the old database tables
- Perform schema and data migrations on the old models first (in the part app)
- Swap model references in correct order
* Improve checks for data migrations
* Bug fix for data migration
* Add migration unit test to ensure that primary keys are maintained
* Add playwright test for company parameters
* Rename underlying database tables
* Fixes for migration unit tests
* Revert "Rename underlying database tables"
This reverts commit 477c692076.
* Fix for migration sequencing
* Simplify new playwright test
* Remove spectacular collision
* Monkey patch the drf-spectacular warn function
* Do not use custom branch for playwright testing
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* Fix for currency functions
- Prevent database access until after the 'common' app has loaded
* Add decorator to selectively ignore warnings
* Add reference to PR
* Fix variable assignment
* Use functools.wraps
* Add wrapper for loading machine registry
* Move decorator to ready.py
* Add missing code
* Set backup values to match default currency codes
* Bump API version
* docs: brief writeup for env-vars on webserver in Dockerfile
Mates with https://github.com/inventree/InvenTree/pull/10900
nit, fix: spacing
2 -> 1
* docs: relocate
And simplify
---------
Co-authored-by: Karl Quinsland <contact@kquinsland.com>
* [plugin] Add printing delay to sample machines
- Useful for testing
- Default is zero
* Add backup_value to MachineSetting.get_setting
* Fix call to machine.get_setting
* Fix for printing logic
* Simplify code
* Refactor NumberField into separate component
* Add helper func to ensure a number is a number
* Use placeholder value for suggested sale price
* Fix for auto-fill
* Tweak price calculation
* Add UI testing for sales order price breaks
* Fix aria label name
* Annotate price breaks to supplier part
* Fetch price break data
* Support price breaks for purchase order pricing
* Fix required to prevent circular imports
* Add playwright tests for purchase order price breaks
* Bump API version
* Re-add output options for SupplierPriceBreakList
* Revert change
* Simplify unit test
* Bug fix for getMediaUrl
- Proper check for file type
- Fix "fully_qualified_url" for Attachment model
* Add unit test
* Fix typo
* Fix unit test
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* Additional checks for virtual parts in sales order process
* Prevent allocation against virtual parts
* Fix order of operations
* Adjust part form fields based on selections
* Prevent order locking
* Updated playwright tests
* Add unit test
* [UI] Fix for form OPTIONS query
- Fetch OPTIONs each time form is opened
- Ensure default values are filled correctly
- Prevent issues with latching form state
* Add comment
* Add playwright test
- Check that the reference field increments properly
* Fix other Playwright tests
* Fix for setting custom status
* Fix for setting custom status when receiving stock items
* Allow caching for set_status
* Updated code and unit tests
* Auto-fill supplier parts in order wizard
* Copy supplier part SKU from order parts wizard
* Add "on_order" filter to BuildLine table
* Allow ordering by production and ordering quantities
* Allow specification of purchase price
* Bump API version
* Adjust UI testings
* feat(backend): bump to 5.2 lts / python 3.11
This will give us support till 2027-10 (PEP 664)
* bump dependencies
* fix dflt version
* remove 3.9 precaution
* changes for 5.2
* changes for py 3.10
* debug command
* lower crypto again
* another lowering
* fix version string
* lower minimum version to 3.11
* update refs
* fix text
* reaking: remove now unsupported OS
* disable break
* remove temp changes
* fix ruff call
* fix remaining ruff warnings
* remove old arg
* lower allauth reqs
* replace old method
* fix issue with args passing beeing depreceated
* add changelog entries
* bump dependencies a bit further
* fix broken image init for now
might need a refactor
* fix another test
* refactor image name lookup
* mroe refactoring
* ensure str does not cause an issue
* update referenced function
* fix cal sig
* simplify method and add test
* refactor
* ignore wrong typings
* fix deprecated feature
* simplify
* ensure image tests do their job
* simplify
* re-add type check
* fix test
* fix assertations - wonder how long this was broken
* bump to newer versions
* bump deps
* fix assertation
* simplify
* fix return type
* handle token (app access)
* reduce lookup amount
* add positive test again
* add poisitive test
* move out settings
* add tests for Check2FAMiddleware
* add test for auth_request
* add a reverse name for auth_request
* auth tests refactors
* move test
* disable check for things that do not trigger
* fix typing for python 3.9
* make names clearer and add comments
* finish tests
* fix call
* re-enable mfa test without the timing component
* cleanup helper
* ignore easy out
* ignore scenario that can not happen
* Add "Category" column to BOM Table
* Enable sorting by category in BOM table
* Add Category column to Buildline table
* Add Category filter to BuildLineTable
* Adjust queryset prefetch
* Bump API version and update CHANGELOG
* New report functions:
- create_currency: Create a new Money object
- convert_currency: Convert from one currency to another
* docs
* More checking on report tags
* Better formatting of report errors
* Add unit tests
* Remove error message
* Fix pathing for docs
* Add type hints
* Adjust unit tests
Fixes#10701
The issue was that the table row key was using 'props.item.pk', but the
API returns 'id' instead. This caused React to not properly render the
rows with their values.
Changed the key to use 'props.item.id' with a fallback to 'props.idx'
for new rows that don't have an ID yet.
Signed-off-by: Akhil Singh <singhakhil69@gmail.com>
* add option to set leftMargin
* Add home tab and action button
* make home button actually go to home
* Add general info text
* Add dependeant quick action section
* Add Quickaction to home page
* use Carousel
* style check
* small fixes
* add permanent alerts to Admin Center Home
* also show inactive alerts
* fix order of alerts
* simplify attrs
* remove security section for now
* bring quick actions alive
* adjust text
* Use StylishText
* Make alert columns reactive
* Adjust text formatting
* Refactor <QuickActions />
- Use responsive grid instead of carousel
- Add icons
- Translate text
---------
Co-authored-by: Oliver Walters <oliver.henry.walters@gmail.com>
* bump vers
* fix ssl?
Added build dependencies for libbz2, libffi, and libssl.
* try empty buildpack
* clean up
* fix ref
* remove things we now do not need anymore
* add 22.04 as a target
* cleanup installer
* add changelog entry
* add dotenv
* update skript
* make task more robust for package usage
* ensure we have a site-url set
* fix style
* fix syntax
* Enhancement for metadata OPTIONS checks
- Handle case where custom `role_required` attribute is set
- Allows integration for plugin views not associated with an internal model
* Cleanup logic
* Display PendingShipments panel
- Overview of all outstanding shipments
* Update UI tests
* add separate page for troubleshooting
* Restructure menus a bit
* Fix top-level page for mobile app
* Add option to override default value in docs
* Update global.md
* Formatting updates
* Update sales pages
* Move order images to "purchasing"
* Small tweaks
* Make "Concepts" a top-level documentation item
* Update image
* Cleaner handling of inputs
* Fix for frontend form:
- Fix typo in field
- Better option defaults
* Tweak part category delete form
* Add frontend tests
* remove duplicate template tag
* Add "multiplier" argument to render_currency
* Improve render_currency
- Enable conversion of non-money values to a Money instance
* Improve maths tags
- Convert values to Decimal
- Ability to cast result to different type
* Updated docs
* Improved feedback from maths tags
* Updated unit testing
* Improved rendering of printing errors
* Add extra test for render_currency tag
* Enfoce multiplier type
* Fix docstrings
* Improved error handling
* Remove defunct unit test
* Fix unit tests
* Add project code to line items
* Refactor AbstractOrderSerialiazer
* Refactor AbstractOrderLineItem serializer
* Refactoring for AbstractExtraLineSerializer
* UI elements for extra line item project code
* UI for ReturnOrderLineItems
* UI elements for SalesOrderLineItem
* UI elements for PurchaseOrderLineItem
* Docs updates
* Update API version and CHANGELOG
* Add "checked" column to SalesOrderStatus table
* Add API filter for "checked" status
* Add Checked / Not Checked badge
* Add actions to check / uncheck shipment
* Add modal for changing checked_by status
* Display checked_by user
* Tweak wording
* Bump API version
* Update CHANGELOG file
* Update docs
* Add new global setting
- Prevent shipment completion which have not been checked
* Test if shipment has been checked
* Updated unit tests
* Updated type hinting
(may as well while I'm here)
* Adjust shipment icon
* Add "order_outstanding" filter for SalesOrderShipment table
* Adds "shipment_address" attribute to the SalesOrderShipment model:
- Allows different addresses for each shipment
- Defaults to the order shipment address (if not specified)
* Add unit testing for field validation
* Update SalesOrderShipment serializer
* Edit shipment address in UI
* Render date on shipment page
* Improve address rendering
* Update docs
* Bump API version
* Update CHANGELOG.md
* Fix API version
* Remove 'project_code' from optional fields
- enable_filter overrides field options
- Field does not auto-describe as a related field any more
- Breaks front-end forms
* Unit tests
* Include fix for currency
- Ref: https://github.com/inventree/InvenTree/pull/10645
* Cleanup import
* Adjust unit tests
* move filtering of serializer fields out of functions into mixin
* fix def
* temp fix
* rollback rollback
* more adoption
* fix many serializer behaviour
* optimize mro
* set many serializer
* adjust default filtering
* fix import
* add missed field
* make can_filter suppport more complex scenarios:
- different filtername from fieldname
- multiple fields with one filtername
* fix removal
* fix schema?
* add missing def
* add test
* fix schema fields
* fix another serializer issue
* further fixes
* extend tests
* also process strings
* fix serializer for schema
* ensure popped values are persisted
* move test around
* cleanup
* simplify tests
* fix typo
* fix another test
* var tests
* disable additional tests
* make application of PathScopedMixin more intentional -> more efficient
* make safer to use with various sanity checks
* fix list serializer
* add option to ignore special cases
* generalize addition
* remove generalize addition
* re-add missing schema generation exception
* remove new duplication
* fix style
* adjust naming and docs, add typing to clean stuff up
* simplify more
* fix ref calc
* Add generic test for serializer
* enable query based filtering
* enable previously disabled filters
* test failure modes
* reduce diff
* make check more robust
* add more INVE-I2 checks
* improve check
* make check and test more robust
* enable controlling query parameters per field
* ignore in coverage
* Remove project_code filter from BuildSerializer
Removed project_code filter from BuildSerializer.
* fix style
* Revert "Remove project_code filter from BuildSerializer"
This reverts commit 504eff0fd7.
* Revert "fix style"
This reverts commit 8e31db95d3.
* [docker] Allow HTTPS port to be specified for Caddy proxy
* Fix naming collision for INVENTREE_WEB_PORT
* Push InvenTree version first
* Adjust Caddyfile
- Change backup server
* Fix docstring
* Tweak for site URL check:
- Ignore port if SITE_LAX_PROTOCOL_CHECK is set
- Invert logic for readability
* Additional checks for port mismatch
* Adjust middleware checks
- Allow for less strict checking of CSRF_TRUSTED_ORIGINS
* Slight refactor
* updated part api mixin and part serializer to include salepricebreaks when explicitly queried
* fixed bug in ApiForm that prevents form field value from updating correctly
* CreateSalesOrderLineItem form now automatically applies price break based on currency and quantity for a part
* bumped API version due to PartsList api price_breaks query param
* fixed incorrect field names
* Remove whitespace
* Increase database query limit from 20 to 25
* updated ApiForm to propagate false and 0 as values to their respective fields, updated ApiFormField to eagerly apply AdjustValue to apply adjustments when onChange does not fire (when the value does not truly change)
* updated pagination number check to a range instead of discreet values.
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
* Form Field updates:
- Allow spec of leftSection prop
- Allow spec of rightSection prop
* Add ability to auto-fill text input with placeholder value
* Simplify stock form
* Better serial number placeholders
* Update other generator fields
* Add default placeholder to DateInput
* Enhance TextField
* Remove serial_numbers field for non-creation forms
* Update playwright tests
* Adjust playwright tests
* Further playwright adjustments
* Fix project code field for build serializer
* move filtering of serializer fields out of functions into mixin
* fix def
* temp fix
* rollback rollback
* more adoption
* fix many serializer behaviour
* optimize mro
* set many serializer
* adjust default filtering
* fix import
* add missed field
* make can_filter suppport more complex scenarios:
- different filtername from fieldname
- multiple fields with one filtername
* fix removal
* fix schema?
* add missing def
* add test
* fix schema fields
* fix another serializer issue
* further fixes
* extend tests
* also process strings
* fix serializer for schema
* ensure popped values are persisted
* move test around
* cleanup
* simplify tests
* fix typo
* fix another test
* var tests
* disable additional tests
* make application of PathScopedMixin more intentional -> more efficient
* make safer to use with various sanity checks
* fix list serializer
* add option to ignore special cases
* generalize addition
* remove generalize addition
* re-add missing schema generation exception
* remove new duplication
* fix style
* adjust naming and docs, add typing to clean stuff up
* simplify more
* fix ref calc
* Update django-dbbackup version
* Specify STORAGES option for dbbackup
* Add more backup configuration
* Support custom date formats
* Add connector options
* Extend functionality of invoke backup
* Add extra options for restore task
* Add invoke task for finding additional backups
* Small tweaks
* Add docs around backup / restore
* Fix typo
* Add example for GCS storage
* More docs
* commit initial draft for supplier import
* complete import wizard
* allow importing only mp and sp
* improved sample supplier plugin
* add docs
* add tests
* bump api version
* fix schema docu
* fix issues from code review
* commit unstaged changes
* fix test
* refactor part parameter bulk creation
* try to fix test
* fix tests
* fix test for mysql
* fix test
* support multiple suppliers by a single plugin
* hide import button if there is no supplier import plugin
* make form submitable via enter
* add pui test
* try to prevent race condition
* refactor api calls in pui tests
* try to fix tests again?
* fix tests
* trigger: ci
* update changelog
* fix api_version
* fix style
* Update CHANGELOG.md
Co-authored-by: Matthias Mair <code@mjmair.com>
* add user docs
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* Add filters for manufacturer parts table
* Refactor <ManufacturerPartTable />
* Fix typo
* Additional filter options for StockList:
- Filter by ManufacturerPart ID
* Stock table view for ManufacturerPart
* Bump API version
* Adjust config template
- Don't hard-code cookie mode into template
- Revert to the "default" values (which are the same)
* [ui] better feedback on login error
- Show error code, at least
* Revert removed code
* Adjust playwright tests
* show warning text
* fix formatting
* try to gather site-url correctly
* protect envs that are set in the config
* raise issue if they appear
* prefer app setting over file config
* preserve setting if injected via envs
* Handle partial completion of build output
* Add 'quantity' field to BuildOutputComplete API endpoint
* Allow partial scrapping of build outputs
* Adjust column text
* Adjust "complete build output" form
* Change order of operations when completing build output
- Run validation checks *before* potentially splitting stock item
* Extract quantity from serializer
* Documentation
- Update screenshots
- Add note on partial completion
- Add note on partial scrapping
* Update CHANGELOG.md
* Update API version
* Add unit test for partial scrapping
* Tweak text
* Unit test for partial output completion
* Fix validation check for quantity field
* Adjust playwright tests
* add output options for PurchaseOrder, SalesOrder, and ReturnOrder endpoints
* add output options for PurchaseOrder, SalesOrder, and ReturnOrder endpoints
* add serializer context handling and update sales order fixture with additional line item
* bump API version to 398 and update output options tests for PurchaseOrder endpoint
* refactor(backend): move serializer context enrichtment to mixin
* cleanup other get_serializer instances
* add output options tests for SalesOrder and ReturnOrder detail endpoints
* fix typo
* fix api
---------
Co-authored-by: Silver <reza.sh.7798@gmail.com>
* Add serializer fields to fix missing return types in schema
* Bump api version
* Fix api version bump
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* add output options for PurchaseOrder, SalesOrder, and ReturnOrder endpoints
* add output options for PurchaseOrder, SalesOrder, and ReturnOrder endpoints
* add serializer context handling and update sales order fixture with additional line item
* bump API version to 398 and update output options tests for PurchaseOrder endpoint
* add output options tests for SalesOrder and ReturnOrder detail endpoints
* fix typo
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* feat: add output options to Stock API and corresponding tests
* feat: update API version text with recent refactor details
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* fix mysql apply order
* improve error message capabilites for InvenTreeAPITestCase
* Revert "fix mysql apply order"
This reverts commit ef6d9bd99d.
* fix message
* add output options for StockLocation and StockItemTestResult endpoints
* add output options tests for StockLocation and StockItemTestResult endpoints
* add filters for include_installed and stock_item in StockItemTestResultFilter; update tests for new filter options
* update stock test.py
* update api_version.py
* fix test_installed_tests
* Enhance error handling and add tests for stock_item and include_installed filters
---------
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
Co-authored-by: Matthias Mair <code@mjmair.com>
* refactor(api): cascade and category filters in PartList
* Refactor exclude and relate parts in PartFilter
* add output options for Part and BOM endpoints
* add NumericInFilter for excluding parts by ID and related parts
* refactor: clean up unused code and improve output options in API
* Bump API version to 395 and update changelog with recent endpoint refactors
* Fix formatting of API version history in api_version.py
* Update API version history dates in api_version.py
* Enhance NumericInFilter tests: add handling for non-existent IDs, empty strings, and invalid inputs
* feat: add output options for BuildLine and BuildItem endpoints
* enhance output options for BuildLine and BuildItem endpoints with detailed descriptions and tests
* update test
* .
* update API version to v394 and modify related build fixtures and tests
* create separate build_line.yaml fixture
* .
* roll back context in BuildLineMixin
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* Enhance Owner model filtering with optimized search and active status filtersI
* enhance output options for Group API endpoints and add tests for GroupDetail
* update api_version
* Fix "unallocated_quantity" calculation
- Take "consumed" quantity into account also
* Account for consumed quantity in:
- build.is_fully_allocated
- build.is_overallocated
* Additional unit tests
- Ensure the new calculations work properly
* Adjust API filter
* Try splitting query
* Another fix
* Try ExpressionWrapper
* Change order of operations?
* Refactor
* Adjust filtering strategy
* Change ordering
* Use Max wrapper
* Add comments
* Re-Add About link to main nav dropdown
Closes#10392
* disable text selection on most of version dialog - maybe that helps ppl. copying the right section
* highlight the correct copy button
* refactor output options for SupplierPart endpoints
* Add output options schema generation and corresponding tests for SupplierPart
* Bump API version to 392 and update version history; remove unused parameters in SupplierPartMixin
* Update API version to 392 and adjust version history with new release date
* Enhance output options handling in SupplierPart API
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* feat: speed up docker publishing
by spliting tests tasks for docker publishing into paralell
also makes releasing safer as no tests are run in the then published image and the permissions are slimer
* add update
* add names
* prepare image
* add dev setup
* remove migration stage
* merge unit test
* fix(backend): simplify siteurl testing
* add multi-site test
* pass off site_url check if more than one trusted origin is set
* split up testing
* add temporary debug info
* fix test enviorment
* Add ty for type checking
* fix various typing issues
* fix req
* more fixes
* and more types
* and more typing
* fix imports
* more fixes
* fix types and optional statements
* ensure patch only runs if it is installed
* add type check to qc
* more fixes
* install all reqs
* fix more types
* more fixes
* disable container stuff for now
* move typecheck to seperate job
* try to use putput for path
* use env instead
* fix typo
* add missing install
* remove unclear imports - not sure why this was done
* add kwarg names
* fix introduced issue in url call
* ignore import
* fix broken typing changes
* fix filter import
* reduce change set
* remove api-change
* fix dict
* ignore typing errors
* fix more type issues
* ignore errors
* style fix
* fix type
* bump ty
* fix more
* type fixes
* update ignores
* fix import
* fix defaults
* fix ignore
* fix some issues
* fix type
* Update software version to 1.1.0 dev
Bump master branch to 1.1.0 dev version
* Update MAX_VERSION to '2.0.0' in version.py
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* Enhance version check regex
* Refactor version_check.py
- Account for non-standard release tags (rc / dev / etc)
- Refactor code for extracting version info
- Add argparse support
- Update qc_checks.yaml
* Enhanced debug output
* Stringify and strip
* Display version tuple in log
* Tweak CI logs
* https://github.com/inventree/InvenTree/pull/6293
* refactor to a shared component
* refactoring container stuff to a wrapper
* move title to wrapper
* move logoff and loader to wrapper
* mvoe functions to general auth
* seperate login and register into seperate pages
* unify auth styling
* rename component
* adapt to new look
* check if registration is enabled
* feat(frontend):add authentication debug window
* clear state on logout
* add reload button
* reduce diff
* export helper
* move hover out
* only show to superusers
* fix state args
* fix merge
* fix merge
* clean up diff
* reduce diff
* re-diff
* fix shallow loading
* fix test
* fix umport
* Move session info to user settings panel
* Restrict to superuser accounts
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* remove unneeded helper
* remove unnecessary coverage
* ignore catch-all pervisions in app setup
* remove unused function
* this was replaced by get_model_permission_string
* Prevent virtual parts from being linked in a BuildOrder
* Hide "stock" tab for virtual parts
* Filter out virtual parts when creating a new stock item
* Support virtual parts in sales orders
* Add 'virtual' filter for BomItem
* Hide stock badges for virtual parts
* Tweak PartDetail page
* docs
* Adjust completion logic for SalesOrder
* Fix backend filter
* Remove restriction
* Adjust table
* Fix for "pending_line_items"
* Hide more panels for "Virtual" part
* Add badge for "virtual" part
* Bump API version
* Fix docs link
* add output filter to BuildItemFilter and optimize queryset retrieval
* add NumberOrNullFilter to handle filtering by numeric values or 'null'; update BuildItemFilter to use new filter and add tests for output filtering
* update api_version
* fix(tests): Add missing stock fixture to build tests
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* fix remove mfa task
* add test for command
* clean up after schema test
* add assert to esure authenticators are really present/removed
* simplify handler
* improve error message
* make more readable
* Add wrapper function for machine registry
* Decorate entrypoint functions
* Docstrings
* Fix for boolean setting
* Add playwright tests
* Use proper entrypoints
* Ensure settings are fetched correctly
* Prevent recursion of machine registry decorator
* Fix machine status display
* Enhanced warning msg
* Add simple machine sample printer
* Adds playwright tests for machine UI
* re-throw exception
* Define 'machine' plugin mixin class
* Adjust machine discovery
* Use plugin mixins for registering machine types and drivers
* Adjust unit test
* Remove plugin static files when deactivating
* Force machine reload when plugin registry changes
* Add plugins specific to testing framework
* Add test for plugin loading sequence
* Add session caching
- Significantly reduce DB hits
* Enhanced unit testing and test plugins
* Refactor unit tests
* Further unit test fixes
* Adjust instance rendering
* Display table of available drivers
* Cleanup
* ADjust unit test
* Tweak unit test
* Add docs on new mixin type
* Tweak machine overview docs
* Tweak playwright tests
* Additional unit test
* Add unit test for calling machine func
* Enhanced playwright tests
* Account for database not being ready
* fix remove mfa task
* add test for command
* clean up after schema test
* add assert to esure authenticators are really present/removed
* simplify handler
* Add field to "update" existing records
* Ensure the ID is first
* Prevent editing of "ID" field
* Extract db instance
* Bump API version
* Prevent edit of "id" field
* Refactoring
* Enhanced playwright tests for data importing
* Update docs
* Update src/backend/InvenTree/importer/models.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update src/frontend/src/forms/ImporterForms.tsx
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Fix silly AI mistake
* Fix for table pagination
- Ensure page does not exceed available records
* Bug fix for playwright test
* Add end-to-end API testing
* Fix unit tests
* Adjust table page logic
* Ensure sensible page size
* Simplify playwright test
* Simplify test again
* Tweak unit test
- Importing has invalidated the BOM?
* Adjust playwright tests
* Further playwright fixes
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Adds "consumed" field to BuildLine model
* Expose new field to serializer
* Add "consumed" column to BuildLineTable
* Boolean column tweaks
* Increase consumed count when completing allocation
* Add comment
* Update migration
* Add serializer for consuming build items
* Improve build-line sub-table
* Refactor BuildItem.complete_allocation method
- Allow optional quantity to be specified
- Adjust the allocated quantity when consuming
* Perform consumption
* Add "BuildConsume" API endpoint
* Implement frontend form
* Fixes for serializer
* Enhance front-end form
* Fix rendering of BuildLineTable
* Further improve rendering
* Bump API version
* Update API description
* Add option to consume by specifying a list of BuildLine objects
* Add form to consume stock via BuildLine reference
* Fix api_version
* Fix backup colors
* Fix typo
* Fix migrations
* Fix build forms
* Forms fixes
* Fix formatting
* Fixes for BuildLineTable
* Account for consumed stock in requirements calculation
* Reduce API requirements for BuildLineTable
* Docs updates
* Updated playwright testing
* Update src/frontend/src/forms/BuildForms.tsx
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update src/frontend/src/tables/build/BuildLineTable.tsx
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Add unit test for filters
* Add functional tests
* Tweak query count
* Increase max query time for testing
* adjust unit test again
* Prevent consumption of "tracked" items
* Adjust playwright tests
* Fix table
* Fix rendering
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Enhance CompanySerializer to use Prefetch for for better performance
* Refactor CompanySerializer to improve address handling and add schema fields
* implement changes suggested by joe
Co-authored-by: Joe Rogers <1337joe@users.noreply.github.com>
* Update src/backend/InvenTree/company/serializers.py
Co-authored-by: Joe Rogers <1337joe@users.noreply.github.com>
* Update src/backend/InvenTree/company/serializers.py
Co-authored-by: Joe Rogers <1337joe@users.noreply.github.com>
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
Co-authored-by: Joe Rogers <1337joe@users.noreply.github.com>
* Enhance 'count_queries' helper
* Add threshold
* Update typing
* Better rendering
* Improve StockItem
- Make model operations more efficient
* improve with_mixin
- Cache config map against the session cache
* Refactor receive_line_item
- Pass multiple line items in simultaneously
- DB query optimization
- Use bulk_create and bulk_update operations
* Remove extraneous save call
* Fix for unit tests
* Fix return type
* Fix serializer return type
* Refactor part pricing updates
* UI tweaks
* Use bulk_create
* Refactor API and endpoints
* Bump API version
* Fix unit tests
* Fix playwright tests
* Remove debug msg
* Fix for table filter hover
* Adjust unit test
* Run full docker build if full_run specified
* Debugging
* Update migration test
* Fix migration test
* Fix typo
* Debug logging
* Add log info
* Disable the test in docker
* Remove debug prints
* Revert docker ci test
* Fix annotations/pagination on StockApi itemSerialize and BuildApi outputCreate
* Add (to schema) field to specify serial numbers on create for stock item
* Return list on StockItem creation
* Update api version
* Update test to expect list return when creating stock items
* Add note about breaking changes to api version
* Add handling for stockitem list return on creation
* Update api version
---------
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
Co-authored-by: Matthias Mair <code@mjmair.com>
* add warning that the log is useless by default
* Add setting to enhance email log again
* add missing test for #10109
* add test for delete protections
* add error code
* Update email.md
* Update email.md
* Bulk creation of test results
- Add BulkCreateMixin class
- Add frontend support
* Refactor test result serializer
- Allow lookup by template name
* Updated unit test
* Add unit tests
* Add row actions
* Docs
* Fix failing tests
* Bump API version
* Fix playwright tests
* Enhance stock item rendering
- Show location in forms
- Allow differentiation between items
* Unit test fixes
- Account for longer query time in docker mode
* Cast to string
* Improved rendering
* Add "StockReturn" API endpoint
- Provide multiple items
- Provide quantity for each item
* Add frontend form
* update frontend forms
* Refactor frontend
* Allow splitting quantity
* Refactoring backend endpoints
* cleanup
* Update unit test
* unit tests
* Bump API version
* Fix unit test
* Add tests for returning build items to stock
* Playwright tests
* Enhanced unit tests
* Add docs
* Fix value type for settings API endpoints
- Cast to 'native' value
* Check for numerical type casting
* Additional unit tests
* Tweak unit tests
* Fix 'to_native_value' funcs
* Refactor native value casting
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* chore(backend): increase coverage
* add a full api based install / uninstall test
* fix asserted code
* delete unreachable code
* clean up unused code
* add more notification tests
* fix test
* order currencies
* Remove STOCKTAKE ruleset
* Adjust wording of settings
* Cleanup
* Improve text for global settings
* Add BulkDeleteMixin to "stocktake" endpoint
* Frontend updates
* Migrations
- Remove field 'last_stocktake' from Part model
- Remove fields 'user' and 'note' from PartStocktake model
- Remove model PartStocktakeReport
* Frontend cleanup
* Rename global setting
* Rewrite stocktake functionality
* Cleanup
* Adds custom exporter for part stocktake data
* Frontend cleanup
* Bump API version
* Tweaks
* Frontend updates
* Fix unit tests
* Fix helper func
* Add docs
* Fix broken link
* Docs updates
* Adjust playwright tests
* Add unit testing for plugin
* Add unit testing for stock history creation
* Fix unit test
* Adds error code for transition handler issues #10088
* Adds error codes for mandatory plugins #10094
* add more links
* Add error code for global overrides
* disable coverage for a case that can not happen
* Improve formatting for <ConfigValueList>
- Only used for email settings currently
* API updates:
- Allow delete operations of email record
- Allow bulk delete operations of email record
* Table updates:
- Improved table rendering
- Allow delete ops
* Display timestamp in email table
* Add setting to control email cleanup interval
* Add scheduled task to delete old emails
* Bump API version
* feat(cache): Add support for cache password in Redis configuration
* Add cache password configuration option to documentation
* Fix the complaints from CI checks
* Format <BuildLineTable />
* More formatting
* Add helper function for running playwright tests
* Fix playwright test
* Further formatting updates
* Adjust order tables
* Add setting for "mandatory" plugins
* Add 'is_active' method to PluginConfig model
* Check against plugin config object by priority
* Prevent plugin from reporting its own 'active' status
* Refactor get_plugin_class for LabelPrint endpoint
* Fix typo
* Mark internal plugin methods as "final"
- Prevent plugins from overriding them
* Enhanced checks for bad actor plugins
* Enhanced unit test for plugin install via API
* Playwright tests for plugin errors
* Test that builtin mandatory plugins are always activated
* Force mandatory plugins to be marked as active on load
* API unit tests
* Unit testing for plugin filtering
* Updated playwright tests
- Force one extra plugin to be mandatory in configuration
* Adjust unit tests
* Updated docs
* Tweak unit test
* Another unit test fix
* Fix with_mixin
- Checking active status first is expensive...
* Make with_mixin call much more efficient
- Pre-load the PluginConfig objects
- Additional unit tests
- Ensure fixed query count
* Fix the 'is_package' method for PluginConfig
* Tweak unit test
* Make api_info endpoint more efficient
- with_mixin is now very quick
* Run just single test
* Disable CI test
* Revert changes to CI pipeline
* Fix typo
* Debug for test
* Style fix
* Additional checks
* Ensure reload
* Ensure plugin registry is ready before running unit tests
* Fix typo
* Add debug statements
* Additional debug output
* Debug logging for MySQL
* Ensure config objects are created?
* Ensure plugin registry is reloaded before running tests
* Remove intentional failure
* Reset debug level
* Fix CI pipeline
* Fix
* Fix test mixins
* Fix test class
* Further updates
* Adjust info view
* Test refactoring
* Fix recursion issue in machine registry
* Force cache behavior
* Reduce API query limits in testing
* Handle potential error case in with_mixin
* remove custom query time code
* Prevent override of is_mandatory()
* Prevent unnecessary reloads
* Tweak unit tests
* Tweak mandatory active save
* Tweak unit test
* Enhanced unit testing
* Exclude lines from coverage
* (final)? cleanup
* Prevent recursive reloads
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* Enhanced permission checks for API
- Ensure user is authenticated
- Raise PermissionDenied
* Add unit test for unauthenticated user
* Exclude lines from coverage
* Refactor notification concept
- Notifications handled by plugins
* Cleanup
* Only send email if template provided in context
* Logic cleanup
* Fix log_error call
* Refactor error logging
- Ensure plugin slug is correctly attached
- Consistent format
- Logic fixes
* More robust plugin lookup
* Refactor calls to tringger_notification
* Tweak for build stock notification
* Low stock notification refactor
- Actually *use* the notification system
- Fix for email template
* Check stock only when build is issued
* Updated documentation
* Add PluginUserSetting class
- Allows plugins to define per-user settings
* Add API endpoints for PluginUserSetting model
* Placeholder for user-plugin-settings page
* Refactoring frontend code
* Placeholder panel
* Adds user interface for changing user-specific plugin settings
* Tweaks
* Remove old model
* Update documentation
* Playwright tests
* Update API version
* Fix unit test
* Fix removed arg
* Fixes for email notifications
- Track status of sending notifications
- Add helper "activate" method for plugin class
- Update unit tests
* Fix barcode tests
* More unit test fixes
* Test fixes
* Fix for settings models with extra fields
* Enhance unit test
* Remove old test file
* Check for null target_fnc
* Improve DB query efficiency
- Provide a flat list of active keys to plugin.is_active
- Prevents DB fetching (in certain circumstances)
- Add registry.active_plugins() method
* Bump query limit up for test
- In practice, this API endpoint is ~10 queries
* Handle potential errors
* Increase query limit for API test
* Increase query limit for some tests
* Bump API version
* Tweak unit test
* Tweak unit test
* Increased allowed queries
* fix user plugin settings
* Fix for unit test
* Update debug msg
* Tweak API
* Fix endpoint
* Remove "active plugin keys" code
* Restore previous behaviour
* Fix unit tests
* Tweak unit test
* Update src/backend/InvenTree/build/tasks.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update src/backend/InvenTree/plugin/base/integration/NotificationMixin.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Func updates
* Format
* Add notification settings
* Refactor plugin settings groups
* Fix func type
* Adjust message
* Additional unit tests
* Additional playwright tests
* Additional playwright test
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Expose lingui modules to plugins
* Add i18n object to plugin context
* Expose form types
* Update package.json requirements
* Externalize react and mantine when building @inventreedb/ui components
* Externalize lingui packages too
* Extern <AddItemButton />
* Enable form auto-fill
- If a single value is available, pre-fill
- Must be enabled per-field
* Tweak playwright tests for increased reliability
* Fix deps
* Fix rendering glitch in tables
- Table render could glitch based on cached column order
- React does not handle array dependencies well sometimes
- Change when column order is recalculated
* Simplify effect chain
- Memoize columns order
- Simply overwrite with columns order
* Tweak SalesOrderAllocations table
* Refactor "include_variants" filter
* Improved API filtering for "SalesOrderLineItem" endpoint
* Fetch part detail for table
* Fix email template
- Referenced template which does not exist
* Refactor the "requirements" endpoint
- Include variant part requirements too
* Updated starred notifications
* Adjust column name
* Update PartDetail
- Extract information from partRequirements query first
* Cache BOM items
* Improve PartDetail page
* Enhance isGeneratingSchema
- Call inspect as late as possible
* Adjust PartDetail
* Improve BuildOrderAllocations table
* Exclude common.newsfeedentry when exporting
* Updated playwright tests
* Bump API version
* Add mixin for storing user who last updated an instance
* Add mixin to "PartParameter" model
* Fix typo
* Fix strings
* Refactor mixin class
* Update part parameter table:
- Add "user" filter
- Add "updated_by" column
- Add "update" column
- Add "note" column
* Fix for updating date
* Add user information when saving parameter
* small refactors
* Bump API version
* Add unit test for "updated" and "updated_by" fields
* Check for 'note' field
* Update docs image
* Hide "consumed stock" panel if not required
* Docs updates
* Hide allocation fields if the build has no required parts
* Additional serializer options
* More efficient call
* Tree save fix
- Do not rebuild tree when not required
- Reduce DB count for API test
* Reduce query count even further
* Reduce query limit for other tests
* Fix for parent getter
* Added condition
* Remove duplicate check
* Don't pre-fill tree values
* perform atomic delete
* Adjust unit tests
* feat: add tax_id field to Company model and related forms
* Update 0075_company_tax_id.py to fix typo
* Update models.py to fix typo
* Update tests.py to increment 'column_mappings.count()' to 15
* Update api_version.py
* Add --keepdb option for unit test
* Reduce server launch overhead
- isGeneratingSchema was EXPENSIVE
- Running a single unit test reduced from 30s to 3s
* Option to disable check
* Better item extraction
* Improve query efficiency
* Further queryset improvements
* Return correct data format
* Test with hugh number of serials
* Improve serialization UX
* Revert changes to unit tests
* Refactor InvenTreeTree model structure
- Allow for tree with null items
* Refactor pathstring
* Factor pathstring out into a separate mixin
- Keep tree operations separate (in InvenTreeTree)
- Pathstring operations are now in PathStringMixin
* throw error
- Ensure that this func gets removed in future commit
* Fix node delete code
* Migrate "Build" model to new structure
* Add unit tests for Build tree structure
* Refactor StockLocationTreeTest
* Implement tree rebuild test for StockItem model
* Add unit test for stock item serialization
* Refactor "Part" model to use mixin
* Add unit tests for part variant tree
* Add test for node deletion
* Adjust unit tests
* Ensure items are not created with null tree_id
* Further unit tests and updates
* Fix unit tests
* Remove duplicate check
* Adjust build fixture
* Remove rebuild call
* Fixing more tests
* Remove calls to rebuild part tree
* Add test for tree fixtures
* Report tree rebuild errors to sentry
* Remove helper func
* Updates for splitStock
* Cleaner inheritance
* Simpilfy test
- tree_id is somewhat ephemeral
* Handle null parent
* Enforce partial rebuild if parent changes
* Fix
* Remove hard-coded "parent" references
* Fix order of delete operations
* Fix unit test
* Unit test tweaks
* Improved handling for deleting a root node
* Only set tree_id if not already specified
* Only rebuild valid tree_id values
* Cast to list
* Adjust unit test
- Test values were wrong, due to bad data in fixtures
* Do not bulk delete
- mysql no likey
* Enhanced rebuild logic
* Fix for unit test
* Improve logic for _create_serial_numbers
* Unit test fix
* Remove unused function
* use better email check
* add error code for missing email settings
* Add note when not registration is enabled
* fix wrong call
* fix tests - might be worth checking if the blank check for testing is a good idea
* capture issues and print to find out what the duck is going on
* exend log
* fix context check
* Better handling of URLs when loading plugin source
- Handle complex URLs more cleanly
- Support loading from actual external host
- Support loading with specified port
* Fix URL rendering - handle "local" and "remote" components
* Use default host if not provided
* Simplify code
* Add "category" filter for BomItem API endpoint
* Filter BOM table by part category
* Tweak filter label
* Bump API version
* Schema annotation
* Fix playwright test
* Add setting to show location path as plain text in tables
* Use the Location Path setting also for Default Location in the PartTable
* Add setting to show PartCategoty as plain text
* Set DefaultLocationColumn defaultVisible to false
* Fix typo
* Simplify settings keys
* Simplify the name attribute
* Fix typo
---------
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
* Add "serialize" form to build output table
* Fix dependencies for useGenerator hook
* Improve serializing of stock
- Copy test results
- Ensure fields get copied across
* Fix rendering for StockItemTestResultTable
* Enhanced playwright test
* Fix code
* Fix for unit test
* Logic fix for plugins
- Prevent tasks being run for disabled plugins
* Adjust default value for "get_plugin" method
* Fix return type
* Update typing
* Tweak unit test
* Update unit tests
* More test updates
* Logic fix for LOCK_SETTING
- Because the setting is to "allow editing", it is really an UNLOCK setting
- This setting had to be DISABLED (false) to allow editing of completed orders
* Updated logic
* Tweak unit tests
* Filter incomplete outputs by location
* Filter build allocated stock by location
* Filter sales order allocations by location
* Bump API version
* Fix API version
* Fix annotations
* Refactor stock actions into a hook
* Cleanup hooks
* Allow transfer of "incomplete" outputs
* Simplify even further
* Enable transfer of stock allocated to build order
* Remove StockItemBriefSerializer entirely
* stock actions for items allocated to sales order
* Refactor <PartDetail> page
* Refactor <StockDetail>
* Refactor <LocationDetail>
* Bump API version
* Control serializer arguments
* Refactor stock actions into a hook
* Cleanup hooks
* Allow transfer of "incomplete" outputs
* Simplify even further
* Enable transfer of stock allocated to build order
* Remove StockItemBriefSerializer entirely
* stock actions for items allocated to sales order
* Refactor <PartDetail> page
* Refactor <StockDetail>
* Refactor <LocationDetail>
* Bump API version
* SO button text
- Observe the "SALESORDER_SHIP_COMPLETE" value
* Fix palywright tests
* Adjust UI wording
- Separation between "items" and "stock"
* Add info panel if build order has no required items
* Fixes for playwright testing
- Ensure cookies are completely cleaned between sessions
- Fix base URL based on vite command
- Fix samesite cookie mode
- Prevent /static/ files being served by web server on :8000
* Remove gunicorn option
* Fix unit test
* Readjust base URL
* Simplify doCachedLogin
* Adjust text
* Ensure translations are extracted
- Otherwise, playwright will not find the right strings...
* Make admin test more reliable
* Remove asynciness
* Fix <AttachmentLink>
- Allow null "attachment" value
* Better implementation
* Cleanup
* Fixes for playwright testing
- Ensure cookies are completely cleaned between sessions
- Fix base URL based on vite command
- Fix samesite cookie mode
- Prevent /static/ files being served by web server on :8000
* Remove gunicorn option
* Readjust base URL
* Simplify doCachedLogin
* Fix logic func
* Revert webserver cmd
* Set base URL in playwrightconfig file
* Fix URL checks
* Fix URL definitions
* adjust playwright base URL
* Tweak for URL helper
* Further login tweaks
* Tweak test
* wait for API before starting tests
* Handle error
* Adjust login functions
* Don't use gunicorn
- But still use the webserver to serve static files in CI
* Enhanced login functions
* Tweak login tests
* Fix broken test
* Flipped the flippies
* UI improvement for column selection in tables
- Limit max height of dropdown
* Allow retry for instance query
* Prevent flickering when reloading instance
- Don't hide the children
- Just put a loading overlay on top
* Enhanced rendering for <InstanceDetail>
* Refactor other pages
* remove unused attributes
* [FR] Add proactive system check for site_url
Fixes#7847
* fix enviroment for tests
* fix admin tests and make them more robust
* improve tests for admin actions
* add test for all scenarios
* use right http error code
* fix error code
* remove dependency on bundle
* fix test
* Fix for "annotated_scheduled_to_build_quantity"
* Further annotation updates
* Add unit testing for annotation
* Tweak unit test
* Cast annotated expression
* Specific fields required to work
* Refactor other instances
* Update API docs
* Add useStoredTableState zustand
* Store table page size in the zustand state
* Store tablesorting data in zustand state
* Actually provide records...
* Transfer table names state
* Store hidden columns too
- This task is used for syncing translations with crowdin
- However, it has been broken for some time, and does not *extract* translations
- Thus, no *new* translations have been uploaded to crowdin recently
* rename states to better fit naming conv
* fix name
* ensure splashscreen only loads after login check
this reduces a short splash of the splashscreen even if logged in
* move loader to the middle of the screen and remove fallback on a view screens
* Improved mechanisms for data output
- Log errors against output
- Properly catch rendering errors
* Updated error handling
* Fix "render_date" tag
* Update default report template
- Make sure the helper is used
* Bug fixes
* Add stale stock email notifications
Implement automated email notifications for stock items approaching
their expiry dates. Users receive consolidated daily emails for all
their subscribed parts that are within the configured stale threshold.
Fixes#7866
* Fix for tracing init (#9860)
- Circular include means that settings.DB_ENGINE may not be available
* [bug] Custom state fix (#9858)
* Set status correctly when returning from customer
* Fix for stock item status change
- Reduced set of changes from #9781
* Handle API updates
* Fix variable shadowing
* More intelligent comparison
* Remove debug statement
* fix syntax again (#9863)
* fix(backend): change notification for INVE-W10 (#9864)
implements changes requested in
https://github.com/inventree/InvenTree/pull/9769#issuecomment-3004193476
* Tweak for tracing setup (#9865)
- DB_ENGINE is of the form "django.db.backends.postgresql", not "postgesql"
* Update README.md (#9867)
Update sponsors list
* Remove sleep call (#9866)
* New Crowdin translations by GitHub Action (#9813)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Table default cols (#9868)
* Work in progress
- Seems to reset the columns on page refresh
- Probably related to the useLocalStorage hook
* Do not overwrite until the tablestate is loaded
* Prevent table fetch until data has been loaded from localStorage
* Improved persistance
* Adjust default column visibility
* Adjust playwright test
* Clear data tweak (#9870)
* Tweaks for config path checks
* Update delete-data task
* Tweaks for config path checks (#9869)
* fix instrumentation code (#9872)
* [UI] About tweak (#9874)
* Cleanup server info modal
* Sort package info
* De-sync useLocalStorage (#9873)
* [UI] Fix thumbnail rendering (#9875)
- Fix typo which caused full image to be rendered
- This could cause significant network loading time
* Add stale stock email notifications
Implement automated email notifications for stock items approaching
their expiry dates. Users receive consolidated daily emails for all
their subscribed parts that are within the configured stale threshold.
Revert django.po
Fixes#7866
* fixed pull request issues #9875)
* unit test notifications for stale stock items
---------
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
Co-authored-by: Matthias Mair <code@mjmair.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Work in progress
- Seems to reset the columns on page refresh
- Probably related to the useLocalStorage hook
* Do not overwrite until the tablestate is loaded
* Prevent table fetch until data has been loaded from localStorage
* Improved persistance
* Adjust default column visibility
* Adjust playwright test
* Set status correctly when returning from customer
* Fix for stock item status change
- Reduced set of changes from #9781
* Handle API updates
* Fix variable shadowing
* More intelligent comparison
* Remove debug statement
* add anchor element to tabs to enable opening in new tab
* simplify
* use unstyled button instead
* also enable linking on nav panels
* make sure metakey also works (reduces duplication)
* remove headers changes
* move check for modified key to lib
* render nav items as link
---------
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
* Return stock item information when serializing an existing item
* Handle stock item creation
* Commonize response
* Provide build items in response
* Formalize returned data type
* Fix unit test
* moving config files out of the source directories
Fixes#9756
* add folder for config
* fix lookup paths
* reorder ignores
* reduce diff
* better error message
* fix paths
* Update tests.py
* save global warning to db
* fix import
* more import fixes / docs
* fix default
* fix default
* ensure secret_key/get_config_file is tested fully
* try fixing path on docker
* try to make it work on GitHub CI
* refactor testfolder path into config var
* fix test path
* fix test
* do not test on docker
* more tests
* add testing for global warning dict
* fix error handling
* Report merge
* Remove auto-generated file
* Remove pre-commit file
* Revert "Remove pre-commit file"
This reverts commit 00d80bae2a.
* Update API version
* Reduced duplicated logic
* reset pre-commit config
* Added migration files
* Added unit test
* Removed redundant migration
* Updated migration file
* Added a default report template with merge enabled
* Unit test to ensure a single page is generated
* Added docs to support merge feature
* Clean up
* Clean up
* Fixed unresolved link
* Updated API version
* Fixed test report path issue
* Add plugin context for each instance
* merge in master
* Fixed formating
* Added more detailed user guide
* Updated docs
* Added assert to ensure test html output exists
* Updated docs
* Fixed report test path
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* [FR] Improve Email handeling
Fixes#7950
* extend implementation of email thread and message models
* add missing args
* add unit test
* increase test coverage
* make key not necessary
* do not consider in coverage
* add email apis
* Add email admin
* fix email configuration check
* improve rendering
* squash migrations
* add config value overview
* log if mails were send
* add additional headers
* fix api unit test
* fix url resolving
* add InvenTree specific task to issue mails
required to extend sending options (prio, reply to)
* use internal sending task to keep telemetry cleaner
* add prio handling
* add plugin handling
* add setting
* factor plugin method out
* add typing
* move function
* bump version
* fix import path
* add a test for the test endpoint
* fix checking logic
* Add anymail sending / tracking handling
* add more ordering fields to api
* remove unneeded assingment
* add basic docs
* handle incoming emails with anymail
* Add inbox handling
Closes https://github.com/inventree/InvenTree/issues/7951
* add list of supported ESPs
* add better error transparency when sending fails
* add missing migration
* combine migrations back down
* fix todos
* fix qc export
* fix missing model props
* add tests
* ensure things are passed as a list
* fix list formatting
* fix deps
* move tests
* add testing with anymail
* allow handling of priority and headers
* add test for events
* add test for inbound messages
* rename variable
* increase coverage
* fix format
* add setting doc
* fix link
* rename fnc
* disable pro test
* make messages clearer
* fix doc syntax
* fix assign
* fix test
* revert test disablement
* add enum
* disable check for now
* try changing test around
* add incoming mail processing
* fix import
* add docs
* Fix mail.md
* bump deps
* fix api version
* feat: improve user management actions
add "open profile" actions
* add lock / unlock action
* add actions for password reset
* submit coverage info to codecov
no idea why this was turned off
* bump api version
* add frontend test
* add backend test
* fix test state
* move test
* fix style
* fix name
* hide password change if not superuser
* bump playwright
see https://github.com/microsoft/playwright/issues/35183
* fix test
* fix test order
* simplify test
---------
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
* Fix for stockOperationModal
* Re-check when opened status changes
* rename stockOperationModal -> useStockOperationModal
* Fix enabled status of query
* Add option to specify modalId
* Track modal state when open / close
* Prevent generators from running until forms are open
* Prevent double loading of tables
* Fix useQuery
* Fix queryKey
* Revert API change
* feat(docs): Add architecture overview
* add strucutre for rough roadmap
* add stable reference
* document stable links
* test mermaid again
* fix loading
* fix format to reduce warnings
* use local js
* add architecture ovierview
* add more sub-points
* more structure
* add general backend text
* add sme bqsic docs for frontend
* fix list syntax
* fix typo
* Add BuildOrder reference to PurchaseOrderLineItem
* Add setting to enable / disable external build orders
* Fix for supplier part detail
* Update forms
* Filter build list by "external" status
* Add "external" attribute to BuildOrder
* Filter by external build when selecting against purchase order line item
* Add frontend elements
* Prevent creation of build outputs
* Tweak related model field
- Send filters when fetching initial data
* Fix migrations
* Fix some existing typos
* Add build info when receiving line items
* Logic fix
* Bump API version
* Updated relationship
* Add external orders tab for order
* Display table of external purchase orders against a build order
* Fix permissions
* Tweak field definition
* Add unit tests
* Tweak api_version.py
* Playwright testing
* Fix discrepancy in 'building' filter
* Add basic documentation
( more work required )
* Tweak docs macros
* Migration fix
* Adjust build page tabs
* Fix imports
* Fix broken import
* Update playywright tests
* Bump API version
* Handle DB issues
* Improve filter
* Cleaner code
* Fix column ordering bug
* Add filters to build output table
* Documentation
* Tweak unit test
* Add "scheduled_for_production" field
* Add helper function to part model
* Cleanup
* Add functionality to copy part test templates when duplicating a part instance
* Bug fixes
* Tweak part duplication fields
* Add simple playwright test
* Updated unit test for part duplication
* Bump API version
* Update mantine-datatable
* Improve table hook
* Fix for table name
- Table names must be unique
- Otherwise stored column data gets corrupted
* Click through on table
* Tweak unit tests
* Render whole stock location path
- Render location pathstring, not just name
- Brings tables into line with how location is displayed elsewhere
- Closes https://github.com/inventree/InvenTree/issues/9627
* Handle error on worker boot
* Provide mechanism for config to override global settings
* Ensure overrides are observed on save
* Refactor
* Add "read_only" field to serializer
* Prevent editing for read_only settings
* Bump API version
* Update docs
* Secure logs
* Override applies to default_value
* override get_setting method
* Add unit test
* Utilize new approach to override SITE_URL
* Docs updates
* Docs tweaks
* Shortcut for get_global_setting
* Remove previous change
- Allow validation to be performed within the InvenTreeSetting class
* Override INVENTREE_BASE_URL setting
* Handle error on worker boot
* Tweak unit test
* Add InvenTreeBarcodeMixin to SalesOrderShipment
* Barcode model type code method added for SalesOrderShipment class
* Add barcode data to SalesOrderShipment serializer
* Bump API version
---------
Co-authored-by: meenaraj22 <meena@blaze.ws>
Co-authored-by: Matthias Mair <code@mjmair.com>
* add hidden field and logic to reduce clicks for mfa logins
* refactor to seperate function to reduce complexity
* fix missing imports
* fix style
---------
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
* Add shell task
* Filter parts by parameter value
* Allow more operation types
* Working on table filtering
* Filter improvements
* Update on enter key
* Improved query logic
* Enable filter for "generic" parameter types
* Placeholder text
* Documentation updates
* Fix typo
* Fix for boolean part parameter field
* Add API unit testings
* Cleanup
* add playwright tests
* feat(frontend): Add control character handling to barcode text input.
Ports part of 8059fb1e05 to Platform UI.
Fixes#7529.
* feat(frontend): Submit barcode scan on EOT character.
Automatically submits 2D barcode scans when end of transmission character is input.
---------
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
* feat(frontend): Add grouping in the admin center
* fix name
* make sections more distinct
* re-arrange sections
* ensure plugin panels work
* fix missing key issue
* fix test name
* refactor
* rename functions
* move checking for a package install out
* [FR] Add check to cli tools to confirm the right commands for deployment method are used
Fixes#9684
* also log pkg enviroment detection
* vendor is_true
* ensure content is loaded in pkg enviroment
* fix tests and imporve error message
* cleanup
* simplify
* ensure runs in misconfed enviroment
* fix(backend): ensure deps are coupled
* bump deps
* more constraints
* run dep resolver
* expand resolve even more
* lower lxml / xmlsec
* lower allauth
Added clarification on how to change the timezone correctly. The documentation -- if carefully read -- explains how to change the timezone but it can be easily missed. I also explicitly mentioned the specific variable that must be set to change the timezone from UTC
* refactor(doc): only use one command
* restructure
* move all generated helpers to a dedicated directory
* move to pathlib
* and more pathlib
* add empty generated folder
* add stable links for external docs
this is usefull for the CII best practices badge and other sites where we might need stable links; assuming we maintain control of docs.inventree.org seems like a stable bet with current structures
* fix checking logic
* fix link target
* Update SECURITY.md with link
* restructure headers and add hall of fame
* add cpe/cve policy
* add CoC and Security Policy links in readme
* update contributing link
* add link to Threat Model
* update dead links
* Ensure pagination limit is set on schema list queries
* Bump api version
* Update api_version.py
* Bump version again
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* Provide callback function for barcode scan dialog
* Adds hook for barcode scan dialog
* Fix callback processing
* Add function to extract API URL for a model instance
* Tweak page titles
* Extract instance data when scanning a barcode
* Scan item into location
* Scan in stock location
* Remove notYetImplemented func
* Revert "Remove notYetImplemented func"
This reverts commit a35408380e.
* Add stock item action
* Add playwright tests
* feat(backend): better warning on missing migrations
* add debug info to some tasks
* ensure db would even be accessed before raising concerns
* add more markers
* Add decorator to log flow
* reduce calls
* reduce fnc down
* Fix for email sending
- Extract valid email for user
- Do not send if email not configured for user
* Improve email address filtering logic
* Fix return type hint
* Pass more stuff to window
* Expose form functions to plugin context
* Breaking: Render plugin component in context tree
- Required due to createRoot function
- Adds necessary context providers
* Fix context
* Provide MantineThemeContext
* Bundle mantine/core
* Hack for useNavigate within ApiForm
- Errors out if called within plugin context
- Workaround to catch the error
* Update build cmd
* Define config for building "Library" mode
* Update package.json
* Add basic index file
* Factor out ApiEndpoints
* factor out ModelType
* Factor out role enums
* Further refactoring
* More refactoring
* Cleanup
* Expose apiUrl function
* Add instance data to plugin context type def
* Tweaks for loading plugin components
- LanguageContext must be on the inside
* Tweak StylishText
* Externalize notifications system
* Update lingui config
* Add functions for checking plugin interface version
* Extract package version at build time
* Enhance version checking
* Revert variable name change
* Public package
* Add README.md
* adjust packge name
* Adjust name to include org
* Update project files
* Add basic changelog info
* Refactoring to expose URL functions
* Refactor navigation functions
* Update package and README
* Improve navigateToLink function
* Refactor stylish text
- Move into ./lib
- Do not require user state
* Revert changes
- StylishText throws error in plugin
- Low priority, can work out later
* expose function to refresh page index
* Provide RemoteComponent with a method to reload itself
* Bump version
* Cleanup tests
* Prevent duplicate --emptyOutDir arg
* Tweak playwright tests
* Expose role and permission enums
* Fix imports
* Updated docs
* Fix spelling, typos, etc
* Include more package version information
* Expose more version context
* Cleanup
* Probably don't need hooks
* Fix links
* Docs updates
* Fix links
* Add checkClose function to forms
- Allow custom check for whether form should be closed
* Add form to jump to serial number
* Tweak stock detail display
* Remove dead field
(might fix later, but it's hard with the current API)
* Add some icons
* Enhance extract_int functionality
* Add API endpoint for "next" and "previous" serials for a given stock item
* Add serial number navigation on stock item page
* Add playwright tests
* Bump API version
* Fix for serial number clipping
* Another tweak
* Fix AllUnitList schema operation and serializer to match actual response
* Fix LicenseViewSerializer to match actual response
* Remove references to credits page (removed in #8811)
* Allow null commit_branch for detatched HEAD state
* Fix version formatting, add test, clean up parser
* Fix schema mapping and return type for VersionTextView
* Fix and test version off-by-one bug
* API version bump
* Merge version tests, enforce more formatting constraints for parsing
* Cleanup UserDetail page
* Cleanup display
* Re-use UserTable
* Add 'users' permission role
* Check user roles in "admin center"
* Revert "Add 'users' permission role"
This reverts commit 35b047b2f9.
* Improve display logic
* Expose group rule-sets to API
* Prefetch rule_sets
* Add 'label' to RuleSetSerializer
* Add basic RuleSet table
* Add API endpoints for RuleSet model
* Edit group roles via table
* Refactor user permissions checks
- Remove duplicate function calls
- Refactor permission checks into new file
* Further refactoring
* Even more refactoring
* Fix user settings permission
* Add TransferList component
* Tweak GroupDrawer
* Tweak UserDrawer
* adjust user groups via API / UI
* Allow "users" detail on Group API
* Bump API version
* Enumeration of RuleSet name
* Update
* Add permission check
* Update src/frontend/src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx
Co-authored-by: Matthias Mair <code@mjmair.com>
* uncomment warning
* Extend enum usage
* More checks
* Bug fix
* Fix permission checks
* Additional testing for user roles endpoint
* Updated permission classes
- RolePermission with read-only fallback
- RolePermission with additional staff requirement
* Do not allow creation of new RuleSet objects
* Cleanup permission checks and unit tests
* Cleanup UI permission checks
* Updated class dostrings
* Cleanup
* Cleanup permission checks for UserTable
* Add playwright tests for "permission" checks
- Basic for now
- Can be extended in the future
* Tweak unit tests
* Adjust layout of warning / error messages
* Tweak group table logic
* Table cleanup
* Display roles associated with a particular group
* Cleanup
* Tweak user detail page
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* Remove hardcoded currency enum from schema
* Convert schema custom key enums to int to allow customized keys to validate
* Convert stock status key enums to int to allow customizations to
validate in schema
* api version bump
* fix remaining operationId errors
* fix errors
* fix another error
* fix missing model
* ensure we do not ignore warnings anymore
* Restore enumerated help text for currencies
* Remove commented block of old code
* Restore custom key enumerated values to schema documentation
* Restore status key enumeration to schema documentation
* fix more enums
* Add debug definitions for schema generation
* fix schema generation for PluginRelationSerializer
* add migrations
* fix enum names for allauth schema duplications
* bump api version
---------
Co-authored-by: Joe Rogers <1337joe@gmail.com>
* Remove hardcoded currency enum from schema
* Convert schema custom key enums to int to allow customized keys to validate
* Convert stock status key enums to int to allow customizations to
validate in schema
* api version bump
* Restore enumerated help text for currencies
* Remove commented block of old code
* Restore custom key enumerated values to schema documentation
* Restore status key enumeration to schema documentation
* Updated type hints
* Fix tooltip bug
* Check user when sending notification
* Fix test
* Update unit test
* More unit test fixes
* Tweak playwright tests
* add search notes and tie user search settings to checkboxes in search drawer
* add user setting to optionally search the notes of objects
* add search filter test
* add PR link
* add limit parameter
* typo, meant to check part result
* resolve api_version.py conflict
* don't use search_whole and search_regex together
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* refactor(frontend): seperate Alerts into own component
* refactor debug mode info
* add error code for debug mode and render help links in alerts
* add error message for background worker
* add error code for server restart required
* Add error code for missing email settings
* fix various typings
* add error code for missing migrations
* Add default metadata model for schema generation
* Add type hints and annotations where needed for schema generation
* Bump api version
* Fix version bump
* Add request body to schema for bulk delete operations, deconflict list
vs single delete operation ids
* API version bump
* Fix variable name conflict
* Switch from post-processing hook to AutoSchema extension
* Loosen typing on filter dict, correct expected code in tests
* Filter by view class instead of path
---------
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
* Pass extra options through to data export plugins
* Add PartParameterExporter plugin
- Useful for including part parameter data in exporter
* Fix bug in InvenTreeTableHeader
* enable export for partparametertable
* Simplify tests
* Add typing hints
* Add part full name to supplier part table
* Add context variables for sales order report to the docs
* Added more context variables on orders to the docs
* fixed small bug in doc report sample templates
* Allow port 4173 (vite preview)
* Change 'base' attr based on vite command
* Allow api_host to be specified separately
* Harden API host functionality
* Adjust server selections
* Cleanup vite.config.ts
* Adjust playwright configuration
- Allow to run in "production" mode
- Builds the code first
- Runs only the backend web server
- Not suitable for coverage
* Tweak github actions
* Tweak QC file
* Reduce number of steps
* Tweak CI file
* Fix typo
* Ensure translation before build
* Fix hard-coded test
* Test tweaks
* uncomment
* Revert some changes
* Run with gunicorn, single worker
* Reduce log output in DEBUG mode
* Update deps
* Add global-setup func
* Fix for .gitignore file
* Cached auth state
* Tweak login func
* Updated tests
* Enable parallel workers again
* Simplify config
* Try with a single worker again
* Single retry mode
* Run auth setup first
- Prevent issues with parallel test doing login
* Improve test setup process
* Tweaks
* Bump to 3 workers
* Tweak playwright settings
* Revert change
* Revert change
* Improve custom maintenance mode backend
- Utilizing global settings functions
- Will use global cache if available
- Fewer DB hits per request
* Twaeak query limits
* Add part full name to supplier part table
* Add context variables for sales order report to the docs
* Added more context variables on orders to the docs
* Update node version
* Install nvm
* Use n instead of nvm
* Use same approach in devcontainer
* nvm -> npm
* Split commands
* Fix typo
* Workaround : install bash
* Tweak playwright tests
* Bump number of retries
* Update deps
* Only one worker
* SEcurity fix
* Adjust
* Refactor variable name
* Add part information when allocating serial numbers
- Easier identification of which part is being allocated
* Fix for part stock rendering
* add docs for governance and security
* fix formatting
* rename page
* add thread modell info
* fix list rendering
* Add links to the thread modell throughout the docs
* add link to devsecops
* fix thread / threat
* fix path
* text fixes
* Add function to star / unstar a part
* Also use with category
* Email notification when a part is changed
Fixes#7834
* enable disabling of recent checks
* Add error handler
* remove unneeded function
* Define which builtin plugins are always-active
* Adds 'mandatory' property to PluginConfig
* Update API / frontend
* Fix form method
* Tweaks
* Bump API version
* Tweak unit tests
* [UI] Change default web prefix
- Adjust default from "platform" to "web"
- Much more standard prefix
* Cleanup
* Fixes for playwright tests
* Fix unit tests
* Refactor base_url into getBaseUrl
* Move data export code out of "importer" directory
* Refactoring to allow data export via plugin
* Add brief docs framework
* Add basic DataExportMixin class
* Pass context data through to the serializer
* Extract custom serializer
* Refactoring
* Add builtin plugin for BomExport
* More refactoring
* Cleanup for UseForm hooks
* Allow GET methods in forms
* Create new 'exporter' app
* Refactor imports
* Run cleanup task on boot
* Add enumeration for plugin mixin types
* Refactor with_mixin call
* Generate export options serializer
* Pass plugin information through
* Offload export functionality to the plugin
* Generate output
* Download generated file
* Refactor frontend code
* Generate params for downloading
* Pass custom fields through to the plugin
* Implement multi-level export for BOM data
* Export supplier and manufacturer information
* Export substitute data
* Remove old BOM exporter
* Export part parameter data
* Try different app order
* Use GET instead of POST request
- Less 'dangerous' - no chance of performing a destructive operation
* Fix for constructing query parameters
- Ignore any undefined values!
* Trying something
* Revert to POST
- Required, other query data are ignored
* Fix spelling mistakes
* Remove SettingsMixin
* Revert python version
* Fix for settings.py
* Fix missing return
* Fix for label mixin code
* Run playwright tests in --host mode
* Fix for choice field
- Prevent empty value if field is required
* Remove debug prints
* Update table header
* Playwright tests for data export
* Rename app from "exporter" to "data_exporter"
* Add frontend table for export sessions
* Updated playwright testing
* Fix for unit test
* Fix build order unit test
* Back to using GET instead of POST
- Otherwise, users need POST permissions to export!
- A bit of trickery with the forms architecture
* Fix remaining unit tests
* Implement unit test for BOM export
- Including test for custom plugin
* Fix unit test
* Bump API version
* Enhanced playwright tests
* Add debug for CI testing
* Single unit test only (for debugging)
* Fix typo
* typo fix
* Remove debugs
* Docs updates
* Revert typo
* Update tests
* Serializer fix
* Fix typo
* Offload data export to the background worker
- Requires mocking the original request object
- Will need some further unit testing!
* Refactor existing models into DataOutput
- Remove LabelOutput table
- Remove ReportOutput table
- Remove ExportOutput table
- Consolidate into single API endpoint
* Remove "output" tables from frontend
* Refactor frontend hook to be generic
* Frontend now works with background data export
* Fix tasks.py
* Adjust unit tests
* Revert 'plugin_key' to 'plugin'
* Improve user checking when printing
* Updates
* Remove erroneous migration file
* Tweak plugin registry
* Adjust playwright tests
* Refactor data export
- Convert into custom hook
- Enable for calendar view also
* Add playwright tests
* Adjust unit testing
* Tweak unit tests
* Add extra timeout to data export
* Fix for RUF045
* Allow bulk selection of sales order shipment
* Tweaks
* Support bulk-edit for location parent and category parent
* Allow more login attempts for playwright
* Refactor BulkDeleteMixin
* Implement BulkUpdateMixin class
* Refactor NotificationsTable
- Use common bulkdelete operation
* Update successMessage
* Update metadata constructs
* Add bulk-edit support for PartList endpoint
* Implement set-category for part table
* Cleanup old endpoint
* Improve form error handling
* Simplify translated text
* Add playwright tests
* Bump API version
* Fix unit tests
* Further test updates
* https://github.com/inventree/InvenTree/pull/6293
* refactor to a shared component
* refactoring container stuff to a wrapper
* move title to wrapper
* move logoff and loader to wrapper
* mvoe functions to general auth
* seperate login and register into seperate pages
* unify auth styling
* rename component
* adapt to new look
* check if registration is enabled
* feat(frontend):show if redirecting
* reduce diff
* fix missing import
* remove double warning
* Add deps for @fullcalendar
* Basic calendar setup
* Add locale support
* Add custom <SegmentedIconControl> component
* optional 'control' for panel
* Scaffolding out build index page
* Fetch build orders based on calendar dates
* Display builds
* Click to navigate to build
* Working on custom header
* Implement button functionality
* Display current month name
* Implement datepicker dropdown
* Adjust layout
* Custom rendering
* Include part detail
* Implement hook to track calendar state
* Clearing search causes immediate update
* Offload core functionality into hook
- Adds search input
* Spread props correctly
* Cleanup
* Allow build orders to be edited directly from calendar view
* Cleanup
* Fix for InvenTreeCalendarProps
* Improve date range filtering for Build model
* Simplify BuildFilter
* Refactoring
* PurchaseOrder calendar implementation
* Allow edit of purchase orders
* Refactor and implement for all order types
- Add missing "issue_date" field for SalesOrder
- Refactor API for other order types
- Fix rendering issues
* Bump API version
* Add playwright tests for calendar (simple)
* Fix migrations
* Simplify notifications
* Refactor filter components
- Make them more generic
* Enable custom filters for calendars
* Custom filters per table
* Display status label
* Refactoring
* Update playwright tests
* Update build order docs
* Bug fix for order date editing
* Update purchase order docs
* Return Order docs
* Update date formatting
* Ensure notes are not removed when generating schema
* Skip remaining conditional field removals when generating schema, remove removable fields from required lists
* Update API version, add schema gen state check for api-doc endpoint
* Add test for generate schema state
* Add test for schema postprocessing function
* Filter nullable + read_only fields out of schema required lists
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* Caddyfile: Redirect asset requests
- Ensure the static asset files are served by the proxy
- Reduce gunicorn / python load
- Significant server performance increase
* Allow CORS requests to 'assets' path
* Update static assets path for vite build
* Remove RedirectAssetView
* Specify relative base path
Ref: https://vite.dev/guide/build.html#relative-base
* Revert settings.py
* Revert caddyfile
* Remove defunct unit test
* Add timeout to test
* Add attributes to TableFilter type def
* Refactoring
* Refactor ProjectCodeFilter
* Provide simple string rendering of a dynamic filter
* Refactor ResponsibleFilter
* Further refactoring
* More refactoring
* Fix placeholder value
* [Bug] Fix search for StockTrackingList
- Removed invalid field
* Add unit test coverage for failing condition
* Fix 'notes' field for extra line item API
* increase character limits on all link fields to 2000
* update test to still trigger
* Don't fail when diff is too big for echo (#9205)
* Reduce severity of error message (#9209)
- Currently flooding sentry.io with reports
* Disable pagination for ConfigList class (#9210)
* [API] Auth login error (#9212)
Fixes#9211
* [UI] Table Update (#9220)
- Retain user selection for pageSize
* renumber migrations after merge from master
* Remove quick actions (#9222)
* Remove placeholder components
- No function
- Cleanup for 1.0.0
* Remove Placeholder.tsx
* feat(backend): Add user profile (#9116)
* Add user profile
* fix choice set
* ensure primary_group is valid
* add missing migrations
* fix tests
* merge migrations
* add migration test
* add new model to ruleset
* ensure changed to the m2m conenction also validate primary grups
* move signals
* fix import?
* patch user language through
* use set methods correctly
* bump api
* refactoring to make debugging and extending easier
* fix dum recurrsion problem
* fix user pk lookup
* rename migration
* add user and group page
* cleanup
* add hoverCard for user / owner / group render
* include owner_model in owner responses
* move user serializers to users
* add profile to list
* add brief serializer for profiles
* ensure profile is present in most apis
* extend rendered data
* store and observe langauge in profile
* reduce unneeded complexity
* enable access to full profle (including internal fields) in me serializer
* move theme to a single object
* persist theme settings
* fix radius lookup
* remove debug message
* fix filter
* remove unused field
* remove image fields
* add setting to control showing profiles
* fix settings
* update test
* fix theme reload
* Add contact UI
* Add profile edit screen
* fix test
* Add testing for user theme panel
* fix var name
* complete coverage of theme
* Add test for new pages
* make test more reliable in strict mode
* remove step
* fix ref
* add verbose names
* fix used setting
* extend tests
* fix permissions
* fix lookup
* use lookup to enuse ursls stay valid
* update migrations
* Add position field
* fix permissions
* Fix font size in location column (#9230)
* [WIP] Background reports (#9199)
* Update report generation progress
* Add shim task for offloading report printing
* Cleanup
* Add detail endpoints for label and report outputs
* Display report printing progress in UI
* Implement similar for label printing
* Reduce output for CI
* Add plugin slug
* Bump API version
* Ensure it works with machine printing
* Fix null comparison
* Fix SKU link
* Update playwright tests
* Massively reduce log output when printing
* handle null values in existing db data
* fix test to pass at max character limit again
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
Co-authored-by: Joe Rogers <1337joe@users.noreply.github.com>
* Add user profile
* fix choice set
* ensure primary_group is valid
* add missing migrations
* fix tests
* merge migrations
* add migration test
* add new model to ruleset
* ensure changed to the m2m conenction also validate primary grups
* move signals
* fix import?
* patch user language through
* use set methods correctly
* bump api
* refactoring to make debugging and extending easier
* fix dum recurrsion problem
* fix user pk lookup
* rename migration
* add user and group page
* cleanup
* add hoverCard for user / owner / group render
* include owner_model in owner responses
* move user serializers to users
* add profile to list
* add brief serializer for profiles
* ensure profile is present in most apis
* extend rendered data
* store and observe langauge in profile
* reduce unneeded complexity
* enable access to full profle (including internal fields) in me serializer
* move theme to a single object
* persist theme settings
* fix radius lookup
* remove debug message
* fix filter
* remove unused field
* remove image fields
* add setting to control showing profiles
* fix settings
* update test
* fix theme reload
* Add contact UI
* Add profile edit screen
* fix test
* Add testing for user theme panel
* fix var name
* complete coverage of theme
* Add test for new pages
* make test more reliable in strict mode
* remove step
* fix ref
* add verbose names
* fix used setting
* extend tests
* fix permissions
* fix lookup
* use lookup to enuse ursls stay valid
* update migrations
* Add position field
* fix permissions
* Force label printing to background worker
* Refactor "check_reload" state of machine registry
- In line with plugin registry
- More work can be done here (i.e. session caching)
* Better handling of call_plugin_function
* Wrapper for calling machine function
* Use AttributeError instead
* Simplify function offloading
* Check plugin registry hash when reloading machine registry
* Cleanup
* Fixes
* Adjust unit test
* Cleanup
* Allow running in foreground if background worker not running
* Simplify call structure
* Add type hints for name, address, expired, and active
* Add nullable to various fields that return null in the test dataset
* Removed nullable type hint, add default boolean value instead of nullable
* Bump schema version
* Add schema version notes, add localized tags for doc string
---------
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
* https://github.com/inventree/InvenTree/pull/6293
* refactor to a shared component
* refactoring container stuff to a wrapper
* move title to wrapper
* move logoff and loader to wrapper
* mvoe functions to general auth
* seperate login and register into seperate pages
* unify auth styling
* rename component
* adapt to new look
* check if registration is enabled
* reduce diff
* reduce diff
* fix import
* add aria label to make more reliable
* make cap match
* ensure that confirm only works with valid inputs
* leave error for non-matching pwd to API
---------
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
* Remove 'url' field from serializers
- Not used in any official client
- Inconsistent use across models
* Bump API version
* Adjust unit tests
* Fix API version
* use ref pattern on PO duplicate
* use ref patterns on duplicate for other types of orders
* revert unintentional change to pre-commit
* add playwright tests
---------
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
* Remove legacy SettingsContentMixin
- Only used for rendering into old UI
- No longer useful
* Refactor path for NavigationMixin
* Fix typos
* Fix borked import
* Harden playwright tests
* Refactor search drawer
- Allow result groups to collapse
* Add tooltip
* Fix menu position
* Navigate through to complete list of results
* Refactor table headers
* Add index pages for SupplierPart and ManufacturerPart models
* backend: allow split search by company type
* Fix panel naming bug
* Fix model URLs
* Split company results by company type
- Allows better routing to results list
* Remove debug msg
* Fix 'button within button' issue
* Additional playwright tests
* Fix logic for adding items to SalesOrder
* Same thing for purchase orders
* Update serializers.py
Revert typo fix
- Otherwise, we need to do an API bump and the PR can't be back-ported!
* Fix default values for pricing override
* Fix broken calculation for sale pricing
- Was previously excluding COMPLETED orders
* Fix for PricingOverviewPanel
* Fix for InvenTreeMoneySerializer
- Numbers should be represented as numbers!
* Front-end wrangling too
* Fix unit test
* Revert to alpine3:20 / postgres:16
* Remove old hack
- No longer needed as we are using python 3.11
* Update package requirements for devcontainer
Also fixes some docker warnings from the alpine Dockerfile
* Specify SITE_URL
* Reduce log output during docker image testing
* Remove blocking steps from devcontainer setup
* Ensure postCreateCommand.sh fails
* Mount postgres db to separate dir
- Avoid ownership issues of 'dev' dir
* Bump devcontainer docs
* move version tests
* factor out read_license_file
* add testing for license file
* ignore special case when we create the schema
* extent no found api tests
* extend info view tests
* try fixing test?
* fix?
* test user create api
* measure impact of removing bom import
* remove dead code
* Revert "measure impact of removing bom import"
This reverts commit bb31db05e3.
* remove dead code
* remove plugin tags that were made for CUI
* add testing for filters
* add test for config delete
* add more api tests
* adjust tests
* fix test
* use superuser
* adapt error code
* Add test for https://github.com/inventree/InvenTree/pull/9077
* add mixin_available mixin
* make check_reload more observable
* test check_reload too
* test clean_barcode
* reset after testing
* extend datamatrix testing
* debug print
* fix assertation
* Update docker image
- Move from alpine 3.19 to alpine 3.21
- Move from postgres13_client to postgres17_client
* Update docker-compose file
- Move from postgres:13 to postgres:16
- Move from redis:7.0 to redis:7-alpine
* Update docs
* Update docker docs
* Separate Dockerfile for devcontainer
- Debian based (python3.11-bookworm)
- Install essential system packages
* Instal postgres client
* Further devcontainer updates
- Bump postgresql image from 13 to 15
- Store psql data in the dev/psql directory
- Install required frontend packages
* Use --host mode for frontend server
* Tweak devcontainer docs
* Bump pre commit config file
* Revert "Bump pre commit config file"
This reverts commit bbfd875ac8.
* [UI] Settings to contrl editing of "completed" orders
Fixes#8976
* only check for completness if locking is enabled
* also lock lines
* allow editing of status to get an order "free" again
* adjust breadcrumbs to include current item
* Add last breacdrumb to various pages
* Add user settings for last breadcrumb
* add breacrumbs to company subpages
* use getDetailUrl instead
* set default
* change description
* fix styles
* fix merge
* rename to camelCase
---------
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
* Set up CI with Azure Pipelines
[skip ci]
* update used tasks and python
* Update test_stats.yml for Azure Pipelines
* fix install command
* fix uv system setting
* Update test_stats.yml for Azure Pipelines
* Update test_stats.yml for Azure Pipelines
* Update test_stats.yml for Azure Pipelines
* ignore test
* remove old test
* remove comments
* update triggers
* Update README.md
* fix style
* Revert "ignore test"
This reverts commit f96f8caf4e.
* remove dead link to credits
* ignore azure issues
* lower runtime to fix dependabot resolution
* Revert "split up python updates and assign to @matmair for manual fixes where necessary (#8772)"
This reverts commit 04d7a96dde.
* Add new global setting
* Convert to base currency on receipt
* Fix total price rendering in PO table
* Fix for tasks.py
* Update .gitignore
- Ignore auto-generated files
* Update docs
Improved documentation for pricing/currency support
* Updates
* Fix caching for default currency
- Now managed better by session caching
* Add unit test for new feature
* Playwright test fixes
* Validate copying of media files
* Validate media files
* Adjust playwright setup
* Allow multiple attempts to fetch release information
* Tweak unit tests
* Revert changes to .gitignore file
- Just trying stuff at this point
* Add debug msg
* Try hard-coded paths
* Remove debug prints
* Abs path for database
* More debug
* Fix typos
* Revert change to db name
* Remove debug statements (again)
* Cleanup playwright tests
* More test tweaks
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* Better handling of request object in serializers
* Pass request object through
- Required to extract user information
* Strip column header during import
- Prevent mismatch due to whitespace
* Fix for "minimum stock" field
* Fix for part serializer
* Extract default values on import
* Remove outdated migration message
* Bump API version
* Refactor label printing
- Move "print" method to template
- Allows for internal calls to printing (e.g. plugins)
* Generate dummy request
- Required to trick WeasyPrint
* Refactor reportprinting
* Add timeout for unit test
* More unit tests
* Tweak unit test
* Updated comment
* remove preference-view
* bump api
* move tag test to seperate file
* extend tests
* make tags more robust
* Revert "remove preference-view"
This reverts commit b95aaaff3c.
* Revert "bump api"
This reverts commit 8fc29186cf.
* more coverage
* re-enable test
* even more tests
* just ignore it
* moa test
* crude debugging
* more debugging
* adapt test
* reduce debugging
* fix test_part_image
* remove TemplatePrintBase
* fix style
* fix code
* fix check
* ensure none exsisting image to not cause issue
* reduce tags more
* remove splashscreen usage
* fix test
* reintroduce inventree_logo
* re-add splashscreen fnct
* re-add needed tag
* re-add date renderer
* simplify away user specific stuff - there are no users in reports
* and simplify a bit more
* increase coverage
* fix format
* and more coverage
* fix render_date
* more coverage
* Extend api to also include customize functions
* [FR] Re-Implement customize options
Fixes#8818
* re-implement header
* add splashscreen customisation
* make simpler
* fix rendering
* bump api
* add admindocs
* add tag export command
* add filter export
* switch to yaml
* upload meta info to artifacts
* format workflow file
* fix creation command
* keep all artifacts in schema repo
* fix namespace
* use one command for export
* include tags and filters in docs
* change default filename
* fix call
* fix itteration syntax
* clean up rendering
* fix formatting
* simple escape
* Unit test for SalesOrder data migration
* make field checks more stable
* Adjust migration strategy
* Fix for data migration
* Simplify login test for playwright
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* Middleware for caching against request
* Create helpers for setting / getting session cache
* Settings objects check session cache first
* Ensure setting is removed from session cache when updated
* Cleaner implementation
* Fix cache cleanup
- ONLY allow access if there is a request object
- Ensure cache is deleted once session is over
* Skip plugin registry reload check
* Add 'start_date' to Build model
* Add to serializer
* Add filtering and ordering
* Update BuildOrderTable
- Add new column
- Add new filtering options
* Add sanity check for start_date
* Add 'start_date' field to BuildOrder form
* Update docs
* Bump API version
* Tweak unit testing
* Display 'start_date' on build page
* Refactor UI tests
* Fix for 'date' field in forms
* Add additional unit tests
* Fix helper func
* Remove debug msg
* Increase upload timeout for attachments
* Increase default API timeout
- To account for distant connections
* Use longer timeout when uploading files
* Debug for RTD testing
* Adjust commit extraction
* Cleanup debug output
* Include more vars in output
* Move debug output to top of file
* Add useful link
* Slight tweak to <DetailsTable>
* Responsive layout for user settings
* Make menu links responsive
* Update <FactCollection />
* Update part pricing panels
* Adapt details column count
- Based on element width
* Pin minimum size of thumbnail
* Cleaner implementation
* Revert again
- Use element size, not screen size
* Add expiry on line item receive from PO
* add backend test
* reset pre-commit
* increment inventree api version
* use None as default expiry date
* check global setting STOCK_ENABLE_EXPIRY
* check for default expiry in line item receive
* use dayjs
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* Add 'created_by' field to order API endpoints
* Add 'created_by' filter
* Allow ordering by 'created_by' field
* Update UI tables
- Show "Created By" column
- Column sorting
- Column filtering
* Cleanup order detail pages
* Bump API version
* Refactor table filters
* Fix BuildOrderTable filters
* Create ApiContext provider
* Utilize new context
* Remove api from global context
* Refactor <InvenTreeTable>
- No longer need hard-coded API constant
* Refactor useInstance hook
* Refactoring
- QueryCountDatshboardWidget
- NotesEditor
- RenderInstance
* Refactor multiple tables
* Fix typos
* Refactor useFilters hook
- Allow plugins to use this hook!
* Further refactoring
* Refactor API forms
* Cleanup context routing
* Fix provision order
* Fix server command in Dockerfile
* Ensure invoke is installed into the venv
* Run extra check in docker build step
* Improve documentation
* Intercept ModuleNotFoundError
- Clear error message
* Docs updates
* Add extra check to dev docker build
* Cleanup tasks.py
* Prevent double activation of venv
* Change order of operations
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* basic mixin file
* Add basic check for model type support
* Enhanced documentation for Caddyfile
* Additional documentation around proxy server
* Remove code from other PR
* Remove use_x_forwarded_port setting
- As per the docs, this is ignored in favour of use_x_forwarded_host
- So, is not being used anyway
* Add note on x_forwarded_host option
* Add warning message if SITE_URL not provided
* Add support for SECURE_PROXY_SSL_HEADER
* Update configuration template file
* Update SITE_URL docs
* Remove line
* Re-add use_x_forwarded_port
* Docs tweak
* Improve wording
* Fix broken link
* Update page permissions
- Add permission check to <InstanceDetail>
- HIde breadcrumbs and tree for part
- Hide breadcrumbs and tree for stock
* Additional permissions checks
* Enhancements for "custom state" form
- More intuitive form actions
* Improve back-end validation
* Improve table rendering
* Fix lookup for useStatusCodes
* Fix status display for SockDetail page
* Fix SalesOrder status display
* Refactor get_custom_classes
- Add StatusCode.custom_values method
* Fix for status table filters
* Cleanup (and note to self)
* Include custom state values in specific API endpoints
* Add serializer class definition
* Use same serializer for AllStatusView
* Fix API to match existing frontend type StatusCodeListInterface
* Enable filtering by reference status type
* Add option to duplicate an existing custom state
* Improved validation for the InvenTreeCustomUserStateModel class
* Code cleanup
* Fix default value in StockOperationsRow
* Use custom status values in stock operations
* Allow custom values
* Fix migration
* Bump API version
* Fix filtering of stock items by "status"
* Enhance status filter for orders
* Fix status code rendering
* Build Order API filter
* Update playwright tests for build filters
* Additional playwright tests for stock table filters
* Add 'custom' attribute
* Fix unit tests
* Add custom state field validation
* Implement StatusCodeMixin for setting status code values
* Clear out 'custom key' if the base key does not match
* Updated playwright testing
* Remove timeout
* Refactor detail pages which display status
* Update old migrations - add field validator
* Remove dead code
* Simplify API query filtering
* Revert "Simplify API query filtering"
This reverts commit 06c858ae7c.
* Fix save method
* Unit test fixes
* Fix for ReturnOrderLineItem
* Reorganize code
* Adjust unit test
* Add <ChangePassword> page
* Rename Set-Password to ResetPassword
* Add unit testing
* Ensure user is properly logged into page
* Update playwright tests
* Small tweaks
* Re-add html account base
Fixes#8690
* fix base template
* override dj-rest-auth pattern to fix fixed token model reference
* pin req
* fix urls.py
* move definition out to separate file
* fix possible issues where email is not enabled but UI shows that registration is enabled
* fix import order
* fix token recovery
* make sure registration redirects
* fix name change
* fix import name
* adjust description
* cleanup
* bum api version
* add test for registration
* add test for registration requirements
* Remove django-import-export requirement
* Update settings.py
* Clean up admin files
* Remove much of the old BOM exporter framework
* Add note for future self
* Remove dead unit test files
* Remove defunct AjaxView classes
* Remove InvenTreeRoleMixin
* Update docs for data import
* Export docs
* Refactor form fields
- Allow error message to be passed through via field definition
- Return error information to onFormError
* Fix debounce issue for text fields
* Fix for useForm hook
* Badge fix
- Fix badge rendering for SalesOrderShipment
* Cleanup unit test
* Use LABEL_ENABLE and REPORT_ENABLE settings in PUI
* Cleanup base.html
- Should reduce db hits slightly
* Remove defunct homepage settings
* Cleanup old settings
* Adjust unit test
* Remove custom context processors
- Only merge after 0.17.0 release
- Remove code which injects custom context variables into CUI requests
- Not needed for new API-based PUI code
- Speeds up requests - remove unnecessary DB hits
* Remove broken import
* Remove custom staticfile processing
- No longer needed as CUI is gone
* Add zimor to checks
* fix format
* use same version of checkout everywhere
* do only persist credentials if needed
* remove duplicate clones
* fix pin syntax
* fix pins
* fix template injection
* another injection fix
* Revert "remove duplicate clones"
This reverts commit 9a00ae2bbb.
* Add GH token for further rules
* Start documentation chapter for plugin tests
* Added env variables to the doc
* Fix style errors
* Further style bugs
* Reformat environment variables
* Reformat environment variables
* Add comments from wolflu05
* Add text to the intro
* Added first example the plugin unit test
* Addred line it function
* Typo
* Typo
* Typo
* API fixes for SupplierPart
- Move API filtering into SupplierPartFilter class
- Correct field annotation for detail view
* Add "in stock" and "no stock" badges to SupplierPart detail
* Update details
* Annotate 'on_order' quantity for SupplierPart
* Add "has_stock" filter to SupplierPart API
* Improve API query efficiency
* Add 'has_stock' filter to table
* Update <SupplierPartDetail>
* Bump API version
* New pic
* Marked external icon in picture
* Added a comment on database creation for unittest
* Update contributing.md
---------
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
* Increase query limit
* Add "quantity" field to ReturnOrderLineItem model
* Add 'quantity' to serializer
* Optionally split stock when returning from customer
* Update the line item when splitting
* PUI updates
* Bump API version
* Add unit test
* Allow transfer of items independent of status marker
* Update test
* Display errors in stock transsfer form
* Add option to set status when transferring stock
* Fix inStock check for stock actions
* Allow adjustment of status when counting stock item
* Allow status adjustment for other actions:
- Remove stock
- Add stock
* Revert error behavior
* Enhanced unit test
* Unit test fix
* Bump API version
* Fix for playwright test
- Added helper func
* Extend playwright tests for stock actions
* Set status when returning from customer
* Fix default customer for return order table
* Set status when receiving items against a ReturnOrder
* Bump max query time for currency endpoint
* Bump API version
* Add 'stocktake_before' and 'stocktake_after' filters for StockItem API
* Enable new filters for StockItemTable
* Update CUI table filters
* Add more date filter options for orders
* Add date filters to BuildList
* Update BuildOrderTable filters
* Add more order date filters
* Cleanup PurchaseOrderFilter code
* Implement more PUI table filters
* Add "Completion Date" column to PurchaseOrderTable
* Update ReturnOrderTable
* Add 'text' option for TableFilter
* filter state management
* Bump API version
* Sorting for table filters
* Add playwright tests for stock table filtering
* Playwright updates
- Add some helper functions for common operations
* Refactoring for Playwright tests
* add PO wildcard default setting
* Revert "add PO wildcard default setting"
This reverts commit 6cc577fa73.
* use custom format spec for "wildcard with default" reference pattern
* add wildcard with default to docs
* add test for wildcard with default
* Append plugins dir to pythonpath
* Error handling in plugin helpers
* Install plugin into "plugins" directory
* Use plugins dir when installing from plugins.txt
* Implement removal of plugin from plugins dir
* Remove the dist-info dirs too
* Cleanup
* Catch errors
* Specify plugin location for CI
* Remove plugins.txt support
* Improve regex for plugin matching
* Revert "Remove plugins.txt support"
This reverts commit 0278350351.
* Remove PLUGIN_ON_STARTUP support
* Better error catching for broken packages
* Cleanup
* Revert "Cleanup"
This reverts commit a40c85d47d.
* Improved exception handling for plugin loading
* More logging
* Revert uninstall behaviour
* Revert python path update
* Improve check for plugins file
* Revert check on startup
* Better management of plugins file
- Use file hash to determine if it should be reloaded
* Fix docstring
* Update unit tests
* revert gh env
* No cache
* Update src/backend/InvenTree/plugin/installer.py
Co-authored-by: Matthias Mair <code@mjmair.com>
* Use hashlib.file_digest
* Remove --no-cache-dir
* Revert "Use hashlib.file_digest"
This reverts commit bf84c8155e.
* Add note for future selves
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* fix refreshInstance type and remove return
* Add seperate refresh function with promise as return
---------
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
* Add empty context menu
- For tables without "row actions"
- Show an "empty" menu
- For UX consistency across all tables
* Fix for playwright tests
- Recent changes to the demo dataset...
* Fix typo
* Fix for "installed in" display
- Allow "details" field to be passed custom params
* Add extra debug to link checking
* API: fix for StockTrackingList entry
* Display links for stock items in tracking entry table
* Generate absolute links for item renderers
* Revert "Generate absolute links for item renderers"
This reverts commit 878fba91d0.
* Bump API version
* Add playwright tests
* Add <PageTitle /> component
* Use useEffect to override hard-coded value
* Ensure page titles are tracked across the site
* Adjust unit tests
* Playwright test updates
* Tweak tests
* Update InvenTreeTable.tsx
Revert unused change
* Add level indicators and path to stock location dropdown
* Add level indicators and path to part category dropdown
* Updated stock location string to include location path
* Fix PUI form test (set location)
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* remove unneeded AjaxView usage
* add schema
* bump schema version
* make schema more acurate
* exclude not found view
* make script also axept base api
* Add new backend filters for BuildLine API
* PUI: Better display of part allocations against build orders
* Add 'order_outstanding' filter to SalesOrderLineItem API
* Add new table showing outstanding SalesOrder allocations against a part
* Update playwright test
* Cleanup
* Bump API version
* Add more table columns
* Tweak UsedInTable
* Another table tweak
* Tweak playwright tests
* Add exception handler in tasks.py
- Catch UnexpectedExit
- Print clear message on the command that failed
- Re-throw exception
* Change c.run to run(c)
- Pass all invoke commands through the exception handler
* Add more info to version command
* Pretty colors
* Remove dummy error
* Improve invoke task output:
- Add colors for different message types
- Add success messages for critical tasks
* Tweaks
* Improve output commands
* Add example for INVENTREE_CUSTOMIZE environment variable
* Search also for IPN in allocated parts for build
* Changed example
* Added doc about external stock locations
* Migration for SalesOrderAllocation
- Allow allocation against order with null shipment
* Enhaced query efficiency
* Further API cleanup
* Adjust serializer
* PUI updates
* Enable editing of allocation shipment
* Improve shipment filtering
* Add sub-table for salesorderlineitem
* Add helper method to SalesOrder to return pending SalesOrderAllocations
* Fix for CUI
* Update form for CUI
* Prevent SalesOrder completion with incomplete allocations
* Fixes for StockItem API
* Frontend refactoring
* Code cleanup
* Annotate shipment information to SalesOrder API endpoint
* Update frontend PUI
* Additional filtering for SalesOrderAllocation
* Bump API version
* Hide panel based on user permissions
* js linting
* Unit test fix
* Update playwright tests
* Revert diff
* Disable playwright test (temporary)
* View output from build table
* remove coupling of tests to cui
* all testing for PUI absolute urls
* remove overlapping test
* refactor middleware check
* move static things into global
* factor out test target
* re-add api exception
* keep using settings.js for now
* Adjustments to default template file
- Do not specify SAMESITE_COOKIE options by default
- Fallback to the values in settings.py
* Update config_template.yaml
* Add "active" filter to PurchaseOrderLineItem.part field
* Fix for allocation serial numbers to incoming items
* Validate serial numbers per line item
* Improved permission checking for data importing
- Permission checks on the imported model type
* Improved validation for DateField
* Ignore MissingRate errors
- Do not send these to sentry
* Improved permission checking for data importing
- Permission checks on the imported model type
* Improved validation for DateField
* Fix for unit test
* Refactor plugin components into <RemoteComponent />
* Clean up footer
* Allow BuildOrder list to be sorted by 'outstanding'
* Fix model name
* Update BuildOrderTable filter
* Add StockItemTable column
* Working towards new dashboard
* Cleanup unused imports
* Updates: Now rendering some custom widgets
* Define icons for model types
* Add icon
* Cleanup / refactor / delete
- Complete transfer of files into new structure
* Follow link for query count widgets
* Add some more widgets to the library
* Remove old dashboard link in header
* Remove feedback widget
* Bump API version
* Remove test widget
* Rename "Home" -> "Dashboard"
* Add some more widgets
* Pass 'editable' property through to widgets
* Cleanup
* Add drawer for selecting new widgets
* Allow different layouts per user on the same machine
* Fixes
* Add ability to *remove* widgets
* Add helpful button
* Add a keyboard shortcut
* Refactoring
* Add backend code for serving custom dashboard items
* Load dashboard items from plugins
* Tweak for dashboard item API query
- Refetch if user changes
- Tweak "loaded" value
- Prevent refetchOnMount
* Add message if no dashboard widgets are displayed
* Refactoring main navigation menu
- Group into sections
- Cleanup / consolidation
- General refactoring
* Remove playground
* Add backend field for storing dashboard layout
* Add extra type definitions for UseInstance
* Manual labels for builtin dashboard items
- Otherwise they will change with translation locale
* Shorten labels for more plugins
* Adjust DashboardMenu
* Reduce stored data
* Add widget filter by text
* Remove back-end settings
* Update playwright tests for dashboard
* Updated tests
* Refactor backend API for fetching plugin features
* Further fixes for back-end code
* More back-end fixes
* Refactor frontend:
- Custom panels
- Custom dashboard items
* Further backend fixes
* Yet more backend fixes
- Improve error handling
* Fix for custom plugin settings rendering
* Enable plugin panels for part index and stock index pages
* Cleanup
* Fix nav menu
* Update typing
* Helper func to return all plugin settings as a dict
* Update API version date
* Fix for UseInstancea
* typing fix
* Tweak layout callbacks
* Pass query parameters through to navigation functions
* Improve custom query display
* Add "news" widget
* Ensure links are prepended with base URL on receipt
* Update NewsWidget
* Bug fix
* Refactor template editor tests
* Refactor unit testing for test_ui_panels
* Unit test for dashboard item API endpoint
* Update comment
* Adjust playwright tests
* More playwright fixes
* Hide barcode scanning options if disabled
* Tweak dashboard widget
* Fix custom panel title
* Update documentation around UIMixin class
* Cleanup
* Additional docs
* Add icon def for 'error' ModelType
* Add error boundary to TemplateEditor component
* Fix so that it works with template editors and previews again
* Tweak error messages
* API unit test fixes
* Unit test fix
* More unit test fixes
* Playwright test tweaks
* Adjust error messages
* Add "destination" field to PurchaseOrder
* Add 'destination' field to API
* Add location to PurchaseOrderDetail page
* Display "destination" on PurchaseOrderDetail page
* Pre-select location based on selected "destination"
* Fix order of reception priority
* Auto-expand the per-line destination field
* Add "Purchase Order" detail to StockItemDetail page
* Bug fix in PurchaseOrderForms
* Split playwright tests
* Docs updates
* Bump API version
* Unit test fixes
* Fix more tests
* Backport to CUI
* Use PurchaseOrder destination when scanning items
* Prevent multiple background workers without global cache
* Documentation updates
- New page dedicated to InvenTree process stack
- Update links
- Consolidate information
* Update mkdocs.yml
* Fix for create_child_builds
- Account for concurrency between multiple worker processes
- Ensure db commits are atomic
- Add random delays between build creation
* Check for existing build order
* Initially force task off to background worker
* Revert force_async change
* Include actual model name in notification repot
* Include model_id in API
* Refactoring for NotificationDrawer
- Add error boundary
- Separate rendering func for individual entry
- Allow router navigation
- Better link introspection
- Add tooltip for notification description
* Add URL support for errors
* Allow navigation to an individual error in the admin center
* Updates
* Add rendering method for 'error' model type
* Add helpers methods for table row expansion
* Render a simplified "line item sub table"
- Akin to CUI implementation
- But like, better...
* Edit / delete individual stock allocations
* Improvements for BuildLineTable and BuildOutputTable
* Improvements for table fields
* Refactoring
* Refactor BuildLineTable
- Calculate and cache filtered allocation values
* Code cleanup
* Further fixes and features
* Revert new serializer field
- Turns out not to be needed
* Add playwright tests
* Bug fix for CUI tables
- Ensure allocations are correctly filtered by output ID
* Adjust CUI table
* Revert change to BuildItem API
- Requires "allocations" for build output table
- Probably can refactor this later
* Bug fix for BuildOutputTable in PUI
- Correct calculation for "fully allocated"
* Adjust annotations for serializer
* Bump API version
* Remove 'allocations' from BuildLineSerializer
- Expensive to have a "many" serializer automatically used
- Adjust existing tables accordingly
- Fetch on demand
* WIP: Add some unit tests
* Adjust BuildLine queryset annotation
- Multi-level annotation proves to be very expensive
- Reduce complexity, save a bunch of time on queries
- Remove 'total_allocated_stock' field
- Adjust API query filter
* Optimize query by deferring certain fields
* Further query refinements
* Bump API version
* Enforce lower case for model name checks
* Enhance settings validation
- Add support for "float" settings type
- Improve validation code and error handling
* Add 'group' to offload_task
- Make use of 'group' field in AsyncTask model
- Allows better db filtering
* Log error if low_stock check cannot be performed
* Ensure low-stock checks are performed by the background worker
* Change encoding of arguments to 'notify_low_stock_if_required'
- Pass part ID, not part instance
- Safer, but requires DB hit
* Fix typo
* Fix to allow tests to run
* Fix 'allocated' queryset annotation for SalesOrderLineItemSerializer
* Add 'allocated' filter for SalesOrderLineItemList
* Allow ordering by 'allocated' and 'shipped' values
* Updated unit testing
* Bump API version
* Update playwright tests
* Add "IPN" column to build order allocated stock table
* Allow sorting and searching by IPN
* Handle allocations where allocated but required == 0
* Add "no info available" message to part scheduling
* Adjust PartSchedulingTable
* Icon fix
* Add "latest serial number" information to PartDetail page
* Cleanup code for serial-number placeholder in forms
* Logic fix for displaying non-unity pack quantity
* Fix description field on SupplierPart page
* Fix duplicate table column
* Create simply PartSalesPanel component
* Updates
* Add API endpoint for SalesHistory
- And serializers
- Basic, needs lots of work still
* Fix for PartDetail page
* SalesOrder page updates
* More page updates
* Update API endpoint
* Backend improvements
* add API endpoint
* Front-end rendering
* Make frontend generic
* Fix for CompanyTable
* Make back-end API more generic
* More API improvements
* Implement history for purchasing
* API / UI fixes
* Remove debug statements
* Support file download
* Add endpoint for build order history
* Implement UI for build order history
* Revert backend
* Revert frontend
* Remove unsed imports
* Cleanup permission checks
* Bump API version
* Improve token management code
- Do not request token if other cookies are unavailable
- Do not fetch user data if token is unavailable
- Prevents connection error logs
* Fix for CompanyTable - onRowClick
* Error handling for plugin.increment_serial_number
* Improve error handling for plugin validation functions
* Add Part.get_next_serial_number method
- Simplify call for incrementing
* ValidationMixin: add "part" to increment_serial_number func
* Pass part information through to serial number functions
* Fix circular imports
* Allow "get_latest_serial_number" to use plugin system
* Better working example for plugin sample
* Update SampleValidatorPlugin
* Fix indent
* Add code comment
* Cleanup code logic
* Revert previous commit
* Update unit tests
* BuildOrderTable: Show variants
- Allow filtering of build orders by part variant
* Add "include_variants" filter for SalesOrder table
- A bit tricker!
* Add "include_variants" filter to PartPurchaseOrdersTable
* Enable filtering ReturnOrder by "part" attribute
* Add similiar functionality for SalesOrderAllocation
* Add similar filter for BuildAllocation table
* Add migration file
* Add "index" page for build orders
- Make consistent with other pages
- Allow plugin panels here
- Prepare for future development
* Rearrange URLs for "manufacturing"
- Provide same format as other order types
- Allow for other sub-pages under "manufacturing" in the future
* Fix breadcrumbs
* Adjust playwright tests
* Pass more information through in redirect after login
- Include query parameters in redirect
* InvenTreeTable: Update filters based on URL query parameters
* Add button to remove custom URL query filters
* Refactor "update_serial_number" method
* Refactor serial number validation
- Query is much more efficient now
- Does not have to check each serial number individually
- Makes use of existing Part class method
* Refactor creation of multiple stock items
* Fix for singular item creation
* Refactor serializeStock method:
- Push "rebuild tree" to background worker
- Use bulk_create actions
* Refactor createion of serialized build outputs
* Prevent 1+N DB hits
* Cleanup
* Cleanup
* Reinstate serial number checks
* Add limit for serial number extraction
* Fix cache config
* Revert cache settings
* Fix for unit tests
* Playwright tests
* Bug fix
* Force False cookie mode in testing
* Revert aria-label for PanelGroup items
- No longer works as expected with playwright locators
* Fix playwright vtest
* Further updates
* Playwright test adjustments
* Remove duplicate locator
* Add "in_stock" attribute to StockItem API
* Add "unavailable" badge to StockDetail page
* Hide stock actions menu for "unavailable" stock
* Fix renderer for StockItemTable
* refactor stock table display
* Add 'date' type details field
* Disable "expiry" information on StockDetailPage
* Icon fix
* Bump API version
* Refactor AttachmentPanel into common component
* Remove unused imports
* Add very basic implementation for SalesOrderShipmentDetail page
* Refactor NotesPanel into common component
* Fetch customer data
* Add some placeholder actions
* Updates for shipment detail page
* Adjust SalesOrderShipment API
* Add badges
* Implement API filter for SalesOrderAllocation
* Display allocation table on shipment page
* Add placeholder action to edit allocations
* Improvements for SalesOrderAllocationTable
* Improve API db fetch efficiency
* Edit / delete pending allocations
* Fix for legacy CUI tables
* API tweaks
* Revert custom attachment code for SalesOrderShipment
* Implement "complete shipment" form
* Allocate stock item(s) to sales order
* Fixes for TableField rendering
* Reset sourceLocation when form opens
* Updated playwrigh tests
* Tweak branch (will be reverted)
* Revert github workflow
* Adjust samesite cookie behaviour:
- In DEBUG mode, turn off entirely
- Allow False value (note: *not* a string)
- Force insecure cookie in DEBUG mode
* Change default value in config file template
* Update docs
* Adjust COOKIE_SECURE based on SAMESITE setting
* Translation fixes
- Simplifies translations strings
- Removes some similar duplicate strings
- Reduces passing of tokens into translation
* Adds script for detecting close matches in translation source strings
* Updates for custom script
* Detect duplicate strings (ignoring case)
* Fix some duplicate backend strings
* Fix duplicate strings in frontend
* Fix more duplicate strings
* Run check_source_strings in CI
* Fixes for unit tests
* Fix another broken string
* Revert some changes
* Fix f-string
* Fix old migration files
* Reduce front-end duplication
* Further updates
* Revert change
* Updates
* Refactor serial number allocation
* Refactor API query
Note: This should be further improved, not to automatically return *all* allocation data
* Push expensive operations off to background worker
* Bump API version
* add more admin testing
* fix assertations
* add test for importer admin
* Add tests for https://github.com/inventree/InvenTree/pull/7164
* add common/attachment test
* fix test
* add tests
* remove unused definition - the view is read only
* Revert "remove unused definition - the view is read only"
This reverts commit 4cad8d16f3.
* more tests in report
* Update tests.py
* make lookup dynamic
* make report assertation dynamic
* add migration test
* extend validation plugin tests
* disable flaky test
* Add test for barcode/uid transition
* test reverse migration
* cleanup new test
* remove empty action
* split and refactor API tests
* refactor test
* Add test for error conditions
* fix double entry
* more migration tests
* also test no history
* fix assertation
* add another migration test
* fix typo
* fix manufacturer filter
* test more filters
* even more filter tests
* move top level test to right place
* add todos for tests that could be more expressive
* add test for checking duplicate serials
* ignore cautious catches
* Add helper function for constructing URL to static file
* Fix PluginListTable
- Allow uninstallation of plugin
- Allow deletion of plugin config
* Move helper method to InvenTreePlugin class
* Bump API version info
* Handle simple string error message
* Add playwright test for form validation
* Render stock unit price / total value
* Fix for TextField:
- Prevent unnecessary value change
- This was removing the field error
* Add playwright test for supplier form validation
* Improve checks if "installed items" panel should be displayed
* Adds ability to exclude a given field from form data
* Implement form for installing stock item
* Add placeholder for uninstall action
* Add "note" field
* Add PUI form to uninstall stock item
* Add PUI form to serialize existing stock item
* Remove debug statement
* Ensure that stock item trees are rebuilt correctly after serialization
- No idea how this has not been detected previously
* Add unit test to ensure child_items annotation works as expected
* Add link to parent item in stock detail page
* Refactor to use new placeholder hook
* Enhancements for stock item form
* Edit stock item from "build output" table
* Rearrange menu items
* Fix build order line complete action
* Fix for other modals
* Cleanup dead code
* Reload build details after output state change
* Logic fix for plugin table
* Bump API version
* Adds hook for generating placeholder serial numbers
* Add playwright tests
* Remove unused imports
* Cleanup playwright tests
* Add server-side context for panel plugin rendering
* Add "context" to PluginContext type
* Pass server context through to client-side rendering
* Bump API version
* initial implementation to let plugins provide custom ui features
* provide exportable types
* refactor ref into renderContext to make it more generic and support template preview area ui plugins
* rename 'renderContext' -> 'featureContext' as not all features may render something
* allow to specify the function name via the source file string divided by a colon
* Bump api version
* add tests
* add docs
* add docs
* debug: workflow
* debug: workflow
* fix tests
* fix tests hopefully
* apply suggestions from codereview
* trigger: ci
* Prove that coverage does not work
* Revert "Prove that coverage does not work"
This reverts commit 920c58ea6f.
* potentially fix test???
* Refactor "stocktake" chart
- Format date axis correctly
- Better tooltips
* Fix datatable queries
- Prevent potential infinite loop
* Fix tooltip for BOM table
- Bug due to '.' char in names
* Do not reassign parameter
* Another fix
* Check global config value
* Cleanup tooltip for BOM pie
* Edit and refresh pricing from panel
* Placeholder part scheduling panel
* Add API endpoint definition
* Add defined serializer to scheduling endpoint
* Refactor add_schedule_entry
* Fix field type
* API tweak
* Render scheduling data
* Make links clickable
* Correctly account for dates in the past
* Cleanup table
* Bump API version information
* js linting
* Add model for recording barcode scan results
* Add "admin" interface for new model
* Add API endpoints for barcode scan history
* Add global setting to control barcode result save
* Add frontend API endpoint
* Add PUI table in "admin center"
* Add API filter class
* Enable table filtering
* Update model definition
* Allow more characters for barcode log
* Log results to server
* Add setting to control how long results are stored
* Table updates
* Add background task to delete old barcode scans
* Add detail drawer for barcode scan
* Log messages for BarcodePOReceive
* Add warning message if barcode logging is not enabled
* Add "context" data to BarcodeScanResult
* Display context data (if available)
* Add context data when scanning
* Simplify / refactor BarcodeSOAllocate
* Refactor BarcodePOAllocate
* Limit the number of saved scans
* Improve error message display in PUI
* Simplify barcode logging
* Improve table
* Updates
* Settings page fix
* Fix panel tooltips
* Adjust table
* Add "result" field
* Refactor calls to "log_scan"
* Display result in PUI table
* Updates
* Fix typo
* Update unit test
* Improve exception handling
* Unit test updates
* Enhanced unit test
* Ensure all database key config values are upper case
* Refactor some playwright helpers
* Adds playwright test for barcode scan history table
* Requires some timeout
* Add docs
* Refactor API endpoint for duplicating line items from a purchase order
- Previously was "hidden" (undocumented)
- Cleanup / refactor code
- Now matches part duplication options
- Generic implementation supports all order types
* Update forms
* Refactor line item duplication
* Implement front-end support for return orders
* Enable duplication of sales orders from PUI
* Bump API version
* Adds basic API endpoint for requesting plugin panels
* Split PanelType out into own file
* Placeholder for a plugin panel loaded dynamically
* Add some dummy data for the plugin panels
* Example of plugin panel selection based on page
* Expose some global window attributes
* Add new setting
* Disable panel return if plugin integration is not enabled
* Update hook to auto-magically load plugin panels
* Allow custom panel integration for more panel groups
* Remove debug call
* Tweak query return data
* async fn
* Adds <PluginPanel> component for handling panel render
* Cleanup
* Prevent API requests before instance ID is known
* Pass instance data through
* Framework for a sample plugin which implements custom panels
* offload custom panels to sample plugin
* Load raw HTML content
* Expand custom panel rendering demo
* Adjust API endpoints
* Add function to clear out static files which do not match installed plugin(s)
* Update static files when installing plugins from file
* Update static files when installing or uninstalling a plugin
* Update static files on config change
* Pass more information through to plugin panels
* Prepend hostname to plugin source
* Pass instance detail through
* Cleanup code for passing data through to plugin panels
- Define interface type
- Shorten variable names
* Update docs requirements
* Revert "Update docs requirements"
This reverts commit 63a06d97f5.
* Add placeholder for documentation
* Fix imports
* Add a broken panel which tries to load a non-existent javascript file
* Render error message if plugin does not load correctly
* Only allow superuser to perform plugin actions
* Code cleanup
* Add "dynamic" contnt - javascript file - to example plugin
* Remove default values
* Cleanup unused code
* PanelGroup updates
* Cleanup hooks for changing panel state
* More work needed...
* Code cleanup
* More updates / refactoring
- Allow dynamic hiding of a particular panel
- Pass target ref as positional argument
- Better handling of async calls
* Documentation
* Bump API version
* Provide theme object to plugin context
* Adjust sample plugin
* Docs updates
* Fix includefile call in docs
* Improve type annotation
* Cleanup
* Enable plugin panels for "purchasing index" and "sales index" pages
* Fix for plugin query check
* Improvements to panel selection
- Code refactor / cleanup
- Ensure that a valid panel is always displayed
- Allow plugin panels to persist, even after reload
* Playwright test fixes
* Update src/frontend/src/hooks/UsePluginPanels.tsx
Co-authored-by: Lukas <76838159+wolflu05@users.noreply.github.com>
* Update src/frontend/src/components/plugins/PluginPanel.tsx
Co-authored-by: Lukas <76838159+wolflu05@users.noreply.github.com>
* Update src/frontend/src/components/plugins/PluginContext.tsx
Co-authored-by: Lukas <76838159+wolflu05@users.noreply.github.com>
* Fix context
* Add more context data
* Docs updates
* Reimplement local state
* Fix mkdocs.yml
* Expose 'colorScheme' to plugin context
* Define CustomPanel type definition
* Add unit testing for user interface plugins
* Add front-end tests for plugin panels
* Add new setting to plugin_settings_keys
* Adds helper function for annotating build line allocations
* Improve query efficiency
- Especially around unit testing
- Ensure all settings are generated
- Do not auto-create settings during registry load
* Improve query efficiency for build order operations
* Reduce max query count for specific test
* Revert query count limit
* playwright test updates
---------
Co-authored-by: Lukas <76838159+wolflu05@users.noreply.github.com>
* Simplify user theme settings
* Cleanup
* Fix permission on user list endpoint
* Update AccountDetailPanel to use modal form
* Update components
* UI updates
* Implement default colors
* Display more user details (read only)
* Add specific "MeUserSerializer"
- Prevent certain attributes from being adjusted
* Add <YesNoUndefinedButton>
* Allow role checks to be bypassed for a given view
- Override the 'get_permission_model' attribute with None
* Enable 'GET' metadata
- Required for extracting field information even if we only have 'read' permissions
- e.g. getting table columns for users without write perms
- use 'GET' action when reading table cols
* Add info on new user account
* Fix boolean expression wrapper
* Ruff fixes
* Adjust icon
* Update unit test
* Bummp API version
* Table layout fix
* Add API endpoint for all defined units
Fixes#7858
* render all units in API
* bump API
* Add display for all units
* remove logging
* fix types
* ignore favicon errors
* fix for new pint version
* add tests
* prove against units that are not defined
* append trailing slash to url
* make pagination disableable again
* Improve logic for automatically updating part pricing
* Simplify logic
* Update unit tests to ensure pricing flows upwards
* Unit test update
* Add unit tests for handling of "multi level" BOM pricing
* ADjust unit tests
* Improve efficiency of operation
* Adjust testing for pricing
- Only allow pricing updates in testing if TESTING_PRICING flag is set
* Tweak when pricing updates are performed
* More tweaks
* Fix dynamic translation of ModelType labels
- Cannot be stored as a const, as the locale changes dynamically
- Return translated labels via lookup function
* Tweak inline rendering functions
* Remove references to old setting
- Now offloaded to plugins
* Remove REPORT_ENABLE_TEST_REPORT setting
* Cleanup
* Add new boolean setting to control whether reports are attached automatically
* Attach generated report to model instance
* Update unit testing
* Bump API version
* [PUI] Add placeholder action
- "Allocate Serials" action for sales order
- No functionality yet
* Implement form for allocating by serial numbers
* Improve validation of serial numbers in back-end
* Trim serial number string
* Namespaces for invoke tasks
Fixes#7852
* adjust various places that call re-namespaced tasks
* use full invoke command
easier for future refactors
* fix call name
* move worker to int
* adapt calls in tasks
* fix changed path
* ignore localhost links
* Avoid using internal names
* Support for thematic breaks
- Use the '-' character
* Improve "read only" mode
* Refactor markdown notes editor
- Revert back to simplemde
- Remove package dependencies for mdxeditor
- Fix up buttons / preview / save sequencing
* Update playwright tests
* Cleanup toolbar buttons
* Enable "side by side" mode
* Update UI text
* Make dropdowns better recogniseable
Closes https://github.com/invenhost/InvenTree/issues/98
* change to button with section
* only draw border if needed
* allign drowdowns in header
* use light instead of subtle
* refactor option dropdowns to reduce duplications
* add test for asset redirect
* fully cover spa_bundler
* test token api
* check without beeing authed
* not possible to be reached - no cover
* remove unneeded except
* fully test group apis
* move ignore
* add tests for admin site
* add full admin testing
* use output as ref
* ignore admin edge-case
* test display name settings
* refactor admin test
* add more admin testing
* fix tests assertation
* fix assertations
* add test for importer admin
* remove old test for function that will not be re-added for now
see https://github.com/inventree/InvenTree/pull/8018#discussion_r1734011050
* Add stock detail with wrong pk
* add a few stock tests
* Fix restriction for PartTestTemplate
- limit_choices_to should be "testable", not "trackable"
- ref: https://github.com/inventree/InvenTree/pull/7888
* Add migration file
* Fix validation check
* Fix API filter
* Fix for test fixture
* Fix another test
* Fixture data
* Fix comment
* More fixes
* More fixes
* Moar fix plz thx
* Add Link/Unlink Barcode action
Fixes#7920
* remove unneeded imports
* remove duplication
* simplify
* add testing
* refactor type
* wait for reload to add coverage
* Add warning if custom barcode is used
* Add Image based assign
* fix action button size
* fix selection to prevent wrapping
* use left section for button
* Refactor to seperate Input
* Add comment when not scanning
* Fix punctuation
* factor scan area out
* fix readonly arg
* make BarcodeInput more generic
* make button optional
* reduce code duplication by using BarcodeInput
* remove unneeded abstraction
* add table buttons to build line table
* Add deallocate row action
* Restrict row actions
* Add functionality to 'deallocate' stock from build order
* Implement 'auto-allocate'
* Table column cleanup
* Refactor code into new hook:
- Helper function to update a set of selected rows
- Callback function to remove row
* Refactor existing forms to use new hook
* Fix for RelatedModelField
- Handle callback for null value
* Memoize each field instance
* Cleanup dead code
* Define interfac for TableField row properties
* Handle processing of nested errors
* Pass form controller through to table field rows
* Pass row errors through to individual table rows
* Allow Standalone field to render errors
* Allow allocation against build lines
* Adjust quantity value when stock item is changed
* Fix issue related to field name
* Add "available" filter
* Add "remove row" button
* Add field for selecting source location
* Filter out consumable items
* Adjust form success message
* Revert changes from https://github.com/inventree/InvenTree/pull/7965
* Add error handling for wrong key
* Add e2e test case for error condition
Fixes#7964
* Better code code / flow
* [BUG] Order of states in schema descriptions is not stable
Fixes#7977
* Prevent template adjustment
* Prevent template from being edited
* Fix 'attachment' field for StockItemTestResultSerializer
- Allow 'null' value
* Bump API version
* Add custom user defined states
* make tests more reliable
* fix list options
* Adapt version
* do not engage if rebuilding
* remove unneeded attr
* remove unneeded attr
* fix enum imports
* adapt cove target
* Add status_custom_key to all other serializers
* fix serializer method
* simplify branching
* remove unneeded imports
* inherit read_only status from leader field
* Add more tests
* fix tests
* add test for function
* refactor for easier testing
* move test to seperate class
* Add options testing
* extend serializer
* add test for all states and refactor to reuse already build functions
* use custom field in PUI too
* reset diff
* style fix
* fix comparison
* Add test for str
* test color exceptions too
* remove user state from tracking
* Add intro from model fields too
* update docs
* simplify implementation
* update tests
* fix name
* rename test
* simplify tags and test fully
* extend test to machine status
* move logic for response formatting over
* extend api response with machine status
* ensure only direct subclasses are discovered
* test for length of total respone too
* use new fields on PUI too
* fix test assertion with plugins enabled
* also observe rendering in filters
* Add managment endpoints and APIs
* Add contenttypes to PUI renderes
* use filteres instead
* fix import order
* fix api route definition
* move status choices to serializer
* fix lookup
* fix filtering
* remove admin integration
* cleanup migration
* fix migration change
* cleanup code location
* fix imports
* Add docs for custom states
* add links to custom status
* Add "create_child_builds" field to BuildOrder serializer
- only when creating a new order
- write only field
* Update serializer field
* Add placeholder task for creating child build orders
* Add field to PUI forms
* Auto-create build orders as required
* Bump API vresion
* Add documentation
* Update unit tests
* Update function signature for 'validate_serial_number'
- Pass through stock item parameter
- Required if we want to exclude a particular item from that test
* Update documentation
* Docs fixes
* Add type annotations
* updated translation base
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* updated translation base
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Remove default "not yet implemented" action
- Will force us to manually add "not yet implemented"
- Intended to highlight where we still need to work
* Refactor more components
* Fix for onClick
* Add API bump
* [PUI] Add theme setting to navbar
Closes https://github.com/invenhost/InvenTree/issues/106
* Rename to the same as ColorToggle
* Change action text
Co-authored-by: @SchrodingersGat
* updated translation base
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Add "testable" field to the Part model
- Default = False
- Determines whether a particular part can have tests defined against it
* Adds data migration to set default 'testable' state
* Update part serializers
* CUI: Update table filters
* PUI: Update tables and filters
* CUI: Update part detail page
* PUI: Update part detail page
* Update CUI
* Update build pages
* Update BuildLine serializer
* Bump API version
* Update docs
* Add 'testable' to fieldset
* updated translation base
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Add helper func to check user permission against a given model type
* Validate bulk delete of attachments
- Check permissions against linked model type(s)
* Check permission when creating or editing an attachment instance
* Fix typo
* Fix AttachmentSerializer to allow editing
* Update unit tests accordingly
* Remove unused custom permission classs
* Bump API version
* updated translation base
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* adapt namespace
* add new labels
* make baseimage available for labels
* remove unneeded ending
* ensure image name is correct for ghcrio
* ensure the right outputs are used
* fix reference
* fix assigment
* only push docker reg image if authd
* swith back to env
this gets provided by the version ci script
* make repo targets changeable
* make readable
* revert ghcr.io change
* updated translation base
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Add new global setting
* Check if there are open children before completing a build
* Adds management command to export settings definition
* Fix settings export
* Extract settings data into documentation
* Add global settings spec
* User settings
* Revert strict mode
* Tweak unit test
* Remove unreachable code
* Always export settings first
* Remove unused macro
* Remove old images
* Re-add missing docs strings
* Tweak docs
* Remove unused import
* Create build order from sales order table
* Allow creation of child build order from build page
* Add production and purcahse order quantitres to sales order item serializer
* Bump API version
* Fix playwright test
* Check user permission for tables
* Update permissions for user table
* Fix permission checks for group table
* Permission check for group detail
* Add divider
* Fix permission for template tables
* updated translation base
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Add "ON_HOLD" status code for orders
* Add placeholder buttons for purchase order status change
* Adds hooks for introspecting status code enumerations
* Refactor status codes for import session
- Remove hard-coded values
* Refactor into <PrimaryActionButton />
* Cleanup
* more permission checks
* Add placeholder actions for SalesOrder
* Placeholder actions for ReturnOrder
* Placeholder actions for build order
* Actions for "return order"
* Update actions for return order
- Add "on hold" transition
* Implement transitions for SalesOrder
* Allow control over SalesOrderLineItemTable
* Implement PurchaseOrder actions
* Improve API query lookup efficiency
* UI cleanup
* CUI cleanup
* Build Order Updates
- Implement StateTransitionMixin for BuildOrder model
- Add BuildIssue API endpoint
- Add BuildHold API endpoint
- API query improvements
- PUI actions
* Increase timeout
* Bump API version
* Fix API version
* Fix sales order actions
* Update src/backend/InvenTree/order/serializers.py
Co-authored-by: Matthias Mair <code@mjmair.com>
* Adjust build filters
* PUI updates
* CUI refactoring for purchase orders
* Refactor CUI sales order page
* Refactor for return order
* Refactor CUI build page
* Playwright tests for build order
* Add playwright test for sales orders
* Add playwright test for purchase orders
* js linting
* Refactor return order page
* Add missing functions from previous commit
* Fix for "on order" badge on PartDetail page
* UI tweaks
* Fix unit tests
* Update version check script
* Fix typo
* Enforce integer conversion for BaseEnum class
* Unit test updates
- Includes improvement for equality comparison for enums
* Update documentation
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* Add placeholder for more sales order actions
* Add <SalesOrderShipmentTable />
* Allow filtering by date fields
* Add <ReturnOrderLineItemTable />
- Add label rendering for ReturnOrderLineItem
* Add placeholder actions
* Edit / delete / add line items for return order
* Fix for duplicate action
* Cleanup unused code
* Bump API version
* Update playwright tests
* Build allocation API updates
- Improve API query efficiency
- Add extra export fields to the BuildItemSerializer
* Remove commented code
* Improve query efficiency for BuildLine serializer
* Further improvements
* Improve StockList API endpoint
- Reduce from ~700ms to ~300ms with 250 results
* Improve query efficiency when fetching part parameter data
* Bump API version
* make tree searchable by pathstring
* fix related model field colors in dark mode
* remove unused import
---------
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
* Add new "ON_HOLD" status code to order models
* Update legacy migration for build status
- Pin it to the "live" build status codes
* Fix legacy migrations for order status codes
* Revert "ON_HOLD" status codes
- Just limiting this PR to cleanup
* updated translation base
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Add limit to default location annotation
Limits the number of results from the default_location filter to 1
* Add unit test to verify annotation functionality
* Skeleton for "test results" panel on build detail page
* Generate table columns based on test templates
* Fill out test result table in build panel
* Fix for form submission with files attached
- Better determination of "hasFiles"
- Ignore undefined values
* Add modal form to create a new test result
* Add button for creating a new test result
* Fix for build output table
* Add extra API filtering options to BuildLine API endpoint
* Improve table rendering
* Adjust form fields
* Account for multiple test results
* Add "location" column
* Docs updates
* playwright tests
* Added test statistics
Fixed#5995
* Bump API version
* Fix javascript varible scopes
* Fix javascript exports
* Remove duplicated import
* Add files modified by the pre-commit scripts
* Move test statistics API urls to a separate endpoint
* Merge test-statistics urls
* Undo unrelated changes
* Formatting fix
* Fix API urls for test statistics in PUI
* Fix prefixing in test statistic functions
---------
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
* [PUI] Bug fix for API forms
- Ensure that "blank" data does not get overriden with previous fields
- Better logic for form data fetching
* Playwright test fixes
* add plugin_static template tag
* don't load plugins for collectstatic anymore as they are now collected seperatly
* fix clear plugin staic files bug with nested folder path
* updated translation base
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Included substitute IPN to BOM export
* Added Part Revision to BOM export
* removed trailing whitespace
* Update test_bom_export.py
Added Part Revision to test
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* Make libffi version more flexible
Can not install on debian 12
Fixes#6036
* target v11 packaging on v12 install
we are only targeting one version per debian / ubuntu channel. This should not present a problem
* Add permissions to group API
* factor out permission formatting
* add group permission details to UI
* add nicer accordions with permissions
* add group to models
* Add Admin button to change permissions
* add missing instance renderer
* turn off default view permission to everything
* add migration
* fix rule assigment
* Add now missing view permissions
* Adjust test for the now new default permission count
* add missing view permission
* fix permissions for search test
* adjust search testing to also account for missing permissions
* adjust to new defaults
* expand role testing
---------
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
* initial implementation of barcode generation using plugins
* implement short QR code scanning
* add PUI qrcode preview
* use barcode generation for CUI show barcode modal
* remove short qr prefix validators and fix short qr detection regex
* catch errors if model with pk is not found for scanning and generating
* improve qrcode templatetag
* fix comments
* fix for python 3.9
* add tests
* fix: tests
* add docs
* fix: tests
* bump api version
* add docs to BarcodeMixin
* fix: test
* added suggestions from code review
* fix: tests
* Add MinLengthValidator to short barcode prefix setting
* fix: tests?
* trigger: ci
* try custom cache
* try custom cache ignore all falsy
* remove debugging
* Revert "Add MinLengthValidator to short barcode prefix setting"
This reverts commit 76043ed96b.
* Revert "fix: tests"
This reverts commit 3a2d46ff72.
* Adjust caching key to be numeric for user
* Add strong usermodel to colortheme
* switch to using user model everywhere for colortheme
* re-enable ColorTheme tests
* fix call
* remove old migratin
* fix directory discovery
* Make initial data query wait until options query is complete
* Fix form error issues
- Form fields were being re-constructed
* Update playwright tests - check for form error message
* Prevent reconstruction of form fields
* Hide form elements until OPTIONS request is complete
* Fix for <ChoiceField />
- "value" must be stringified!
* Handle undefined choice values
* Add "batch code" to stock detail page
* Fix for initial focus
* Allow form field definition to change externally
* Force override of fetched data
* Update playwright tests
* Add backup value
* Cleanup initialdataquery
* Unit test updates
* Test updates
* Tweak API Form
* Adjust playwright test
* Package frontend in deb
* Add artifact download
* remove 0.8.0 check
* remove array casting
* fix format once more
* another try
* add brackets again
* add version
* and bash
* and shell
* more debuging
* various style fixes
* small fixes
* and ls for prosperity
* debug
* maybe git as source?
* fix download cmd?
* debug a bit
* debug a bit more
* remove sha download - is not working with GHA restrictions
* write version number
* check if a new frontend must be dowloaded
* write versions into frontend packages
* Matmair/issue7338 (#205)
* Package frontend in deb
* Add artifact download
* remove 0.8.0 check
* remove array casting
* fix format once more
* another try
* add brackets again
* add version
* and bash
* and shell
* more debuging
* various style fixes
* small fixes
* and ls for prosperity
* debug
* maybe git as source?
* fix download cmd?
* debug a bit
* debug a bit more
* remove sha download - is not working with GHA restrictions
* write version number
* check if a new frontend must be dowloaded
* write versions into frontend packages
* change ref dir for tests
* add better build logging
* extend task to get ref from package
* fix downloading syntax
* fix name ref
* make more robust
* more logging
* move import
* turn down unzipping noise
* strip content (spaces, newlines)
* add info what happens now
* fix quite flag
* adjust publisher
* updated translation base
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Fix typo
* Adds new field to DataImportSession model
- field_filters
- Allows custom API field filters to be specified
* Update serializer
* Add button to import purchase order line items
* Fix instance renderer
* Make use of "filters" attribute
* Specify default currency for import
* Update serializer
* Bump API version
* Rename purchaseorderline -> purchaseorderlineitem
Fixed rendering bug when switching from a company that has an image and one that hasn't in a related model field due to the number of rendered hooks changes, because Thumbnail is not used as a component here, but a normal function.
* Allow override of packaging field when receiving items against a PurchaseOrder
* Allow editing of batch code and packaging when transferring stock
* Bump API version
* Translate table headers
* [PUI] Update receive items form
* [PUI] Allow packaging adjustment on stock actions
* Hide packaging field for other actions
* JS linting
* Add 'note' field when receiving item against purchase order
* [CUI] implement note field
* Implement "note" field in PUI
* Comment out failing tests
* Add "field_overrides" field to DataImportSession model
* Adjust logic for extracting field value
* Add import drawer to BOM table
* Enable download of BOM data
* Improve support for hidden errors in forms
* Improve form submission on front-end
- Handle a mix of files and JSON fields
- Stringify any objects
* Update backend validation for data import session
- Accept override values if provided
- Ensure correct data format
- Update fields for BomItem serializer
* Add completion check for data import session
* Improvements to importer drawer
* Render column selection as a table
* Add debouncing to text form fields
- Significantly reduces rendering calls
* Fix for TextField
* Allow instance data to be updated manually
* Allow specification of per-field default values when importing data
* Improve rendering of import
* Improve UI for data import drawer
* Bump API version
* Add callback after bulk delete
* Update playwright test
* Fix for editRow function
* Expose batch code field to StockItemSerializerBrief
* Expose more fields to PartBriefSerializer
* Additional export fields to BuildItemSerializer
* Bump API version
* Fix playwright test
* Fix machine request pickeling
* fix precommit
* fix: shared state between workers and main thread for machine registry
* remove last usage of legacy PUI form framework to fix machine edit/delete modal
* reset cache before initialization
* update documentation
* fix: invalidating cache
* implement machine registry hash to check if a reload is required
* trigger: ci
* fix: request bug
* fix: test
* trigger: ci
* add clear errors and improve restart hook
* auto initialize not initialized machines when changing active state
* fix: tests
* Bump djangorestframework from 3.14.0 to 3.15.2 in /src/backend
Bumps [djangorestframework](https://github.com/encode/django-rest-framework) from 3.14.0 to 3.15.2.
- [Release notes](https://github.com/encode/django-rest-framework/releases)
- [Commits](https://github.com/encode/django-rest-framework/compare/3.14.0...3.15.2)
---
updated-dependencies:
- dependency-name: djangorestframework
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com>
* fix req
* fix deps again
* patch serializer
* bump api version
* Fix "min_value" for DRF decimal fields
* Add default serializer values for 'IPN' and 'revision'
* Add specific serializer for email field
* Fix API version
* Add 'revision_of' field to Part model
* Add validation checks for new revision_of field
* Update migration
* Add unit test for 'revision' rules
* Add API filters for revision control
* Add table filters for PUI
* Add "revision_of" field to PUI form
* Update part forms for PUI
* Render part revision selection dropdown in PUI
* Prevent refetch on focus
* Ensure select renders above other items
* Disable searching
* Cleanup <PartDetail/>
* UI tweak
* Add setting to control revisions for assemblies
* Hide revision selection drop-down if revisions are not enabled
* Query updates
* Validate entire BOM table from PUI
* Sort revisions
* Fix requirements files
* Fix api_version.py
* Reintroduce previous check for IPN / revision uniqueness
* Set default value for refetchOnWindowFocus (false)
* Revert serializer change
* Further CI fixes
* Further unit test updates
* Fix defaults for query client
* Add docs
* Add link to "revision_of" in CUI
* Add playwright test for revisions
* Ignore notification errors for playwright
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Matthias Mair <code@mjmair.com>
* fix possible access to None value
* fix possible access to empty valie
* fix possible access to empty value
* define exception
* remove old todo
* fix trigger on none
* merge condition
* remove empty object pattern
* fix typo
* fix usage of var
* add missing import
* use for of itterator instead
* use let instead of var
* move declaration to ensure logger is accessible
* Revert "remove empty object pattern"
This reverts commit 4701cc97ec.
* Add server-side annotation for "can_build"
- This calculation now performed on the server (in the API)
- Allows better table ordering, etc
- Makes it available for data export
* Bump API version
* Fix project_code serializer field
- Imroperly marked as "read only"
* Add unit test
* Bump API version
* Add project code label to order serializers
- Making it available in exported dataset
* [FR] Add invoke task to remove compiled files
Fixes#7559
* add optional clear step before install ensuring clean updates
* add pre-install
* Update preinstall.sh
* Update functions.sh
* Update preinstall.sh
* add a generic run helper to ensure commands run from top directory
* use generic run for other helpers
* updated translation base
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Add "locked" field to Part model
- Default = false
* Add "locked" field to PartSerializer
- Allow filtering in API
* Filter CUI tables by "locked" status
* Add "locked" filter to part table
* Update PUI table
* PUI: Update display of part details page
* Add "locked" element
* Ensmallen the gap
* Edit "locked" field in CUI
* Check BomItem before editing or deleting
* Prevent bulk delete of BOM items
* Check part lock for PartParameter model
* Prevent deletion of a locked part
* Add option to prevent build order creation for unlocked part
* Bump API version
* Hide actions from BOM table if part is locked
* Fix for boolean form field
* Update <PartParameterTable>
* Add unit test for 'BUILDORDER_REQUIRE_LOCKED_PART' setting
* Add unit test for part deletion
* add bom item test
* unit test for part parameter
* Update playwright tests
* Update docs
* Remove defunct setting
* Update playwright tests
* updated translation base
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Enable passing of enviroment variables
* keep server url static
see #6882 (3)
* keep plugin api out of schema
see #6882 (1)
* Add kwarg to override db settings
* keep currencies stable for schema generation
see #6882 (2)
* use str instead of bool
* add version bump
* Adds new model for DataImportSession
* Add file extension validation
Expose to admin interface also
* Switch to new 'importer' app
* Refactoring to help prevent circular imports
* Add serializer registry
- Use @register_importer tag for any serializer class
* Cleanup migration file
- Do not use one-time hard-coded values here
* Refactor code into registry.py
* Add validation for the uploaded file
- Must be importable by tablib
* Refactoring
* Adds property to retrieve matching serializer class
* Update helper functions
* Add hook to auto-assign columns on initial creation
* Rename field
* Enforce initial status value
* Add model for individual rows in the data import
* Add DataImportRow model
* Extract data rows as dict
* Update fields
- Remove "progress" field (will be calculated)
- Added "timestamp" field
- Added "complete" field to DataImportRow
* Auto-map column names
- Provide "sensible" default values
* Add API endpoint for DataImportSession
* Offload data import operation
- For large data files this may take a significant amount of time
- Offload it to the background worker process
* Refactor data import code
* Update models
- Add "columns" field to DataImportSession
- Add "errors" field to DataImportRow
* Move field mapping to a new model type
- Simpler validation
* Save "valid" status for each data row
* Include session defaults when validating row data
* Update content_excludes
- Ignore importer models in import/export
* Remove port from ALLOWED_HOST entries
* Skip table events for importer models
* Bug fixes
* Serializer updates
* Add more endpoints
- DataImportColumnMappingList
- DataImportRowList
* further updates:
- Add 'get_api_url' method
- Handle case where
* Expose "available fields" to the DataImportSession serializer
Uses the (already available) inventree metadata middleware
* Add detail endpoints
* Clear existing column mappings
* Add endpoint for accepting column mappings
* Add API endpoint exposing available importer serializers
* Add simple playground area for testing data importer
* Adds simple form to start new import session
- Needs work, file field does not currently function correctly
* data_file is *not* read_only
* Add check for file type
* Remove debug statements
* Refactor column mapping
- Generate mapping for each column
- Remove "columns" field
- Column names are calculated dynamically
* Fix uniqueness requirements on mapping table
* Admin updates
- Prevent deletion of mappings
- Prevent addition of mappings
* API endpoint updates
- Prevent mappings from being deleted
- Prevent mappings from being created
* Update importer drawer
* Add widget for selecting data columns
* UI tweaks
* Delete import session when closing modal
* Allow empty string value
* Complete column mapping
* Adds ability to remove rows
* Adjust drawer specs
* Add column 'description' to serializer
* Add option to hide labels in API form field
* Update column heading
* Fix frontend linting errors
* Revert drawer position
* Return correct type
* Fix shadowing
* Fix f-string
* simplify frontend code
* Move importer app
* Update API version
* Reintroduce export formats
* Add new models to RuleSet
* typescript cleanup
* Typescript cleanup
* Improvement for Switch / boolean field
* Display original row data on popover
* Only display mapped columns
* Add DataExportMixin class
- Replaces existing APIDownloadMixin
- Uses DRF serializers for exporting
- *much* more efficient
* Create new file: importer.mixins.py
* Add new mixin to existing views which support data export
* Better error handling
* Cleanup:
- Remove references to APIDownloadMixin
- Remove download_queryset method
- All now handled by API-based export functionality
* Replace table with InvenTreeTable
- Paginate imported rows
- Data can be searched, ordered,
* Make 'pathstring' fields read-only
* Expose list of valid importer types to the API
* Exclude read-only fields
* Cleanup
* Updates for session model
- Column is now editable on mapping object
- Field is no longer editable
- Improve admin integration
* Adds new custom hook for controlling data import session
* Refactor column mapping widget
* Refactor ImportDataSelector
* Working on ImportDataSelector component
* Adds method for editing fields in import table
- Cell edit mode
- Row edit mode
- Form submission still needs work!
* Adds background task for removing old import sessions
* Fix api_version.py
* Update src/frontend/src/components/importer/ImportDataSelector.tsx
Co-authored-by: Lukas <76838159+wolflu05@users.noreply.github.com>
* Update model verbose names
* Rename mixin class
* Add serializer mixin classes
- Will allow for fine-tuning of the import/export proces
* @register_importer requires specific mixin
* Check subclass for export
* Fix typos
* Refactor export serializer
- Keep operations local to the class
* Add shim class to process an individual row before exporting it
* Add mixin to existing serializers
* Add export functionality for company serializers
* Adds placeholder for custom admin class
* Update mantine styling
* spacing -> gap
* Add functionality to pre-process form data before upload
* Remove old references to download_queryset
* Improvements for data import drawer:
- Pin title at top of drawer
* Further improvements
* Fix column selection input
* Formatting improvements
* Use a <Stepper> component for better progress display
* Cleanup text
* Add export-only fields to BuildItem queryset
* Expand "export" fields for BuildItem dataset
* Skip backup and static steps in CI
* Remove hard-coded paths
* Fix for "accept_mapping" method
* Present required fields first on import session
* Add "get_importable_fields" method
* Add method for commiting imported row to database
* Cleanup
* Save "complete" state after row import
* Allow prevention of column caching
* Remove debug statement
* Add basic admin table for import sessions
* Fix for table filter functions
- New mantine version requires string values
* Add filters for import session table
* Remove debug message
* fix for <FilterItem />
* Create new import session from admin page
* Cleanup playground
* Re-open an existing import session
* Memoize cell value
* Update <ImportDataSelector>
* Enable download of build line data
* Add extra detail fields
* Register data importers for the stock app
* Enable download of stock item tracking data
* Register importerrs for "company" app
* Register importers for the "order" app
* Add extra fields to purchase order line item serializer
* Update verbose names for order models
* Cleanup import data table rendering
* Pass session information through to cell renderer
* add separate 'field_overrides' field
* Expose 'field_overrides' to API
* Refactor import field selection
* Use override data if provided
* Fix data extraction
- Ignore columns which are not mapped
* Fix fields.pop
- Provide 'None' argument
* Update import data rendering
* Handle missing / empty column names when importing data
* Bug fixin'
* Update hook
* Adds button to upload data straight to table
* Cache "available_fields"
- Reduces API access time by 85%
* Fix calculation of completed_row_count
* Import individual rows from import session
* Allow import of multiple simultaneous records
* Improve extraction of metadata
- Especially for related fields
- Request object no longer required
* Implement suspended rendering of model instances
* Cleanup
* Implement more columns for StockTable
* Allow stock filtering by packaging field
* Fix "stock_value" column
* Improve metadata extraction
- Handle read_only_fields in Meta
- Handle write_only_fields in Meta
* Increase maximum number of importable rows
* Force data import to run on background worker
* Add export-only fields to StockItemSerializer class
* Data conversion when performing initial import
* Various tweaks
* Fix order of operations for data import
* Rename component
* Allow import/export of more model types
* Fix verbose name
* Import rows as a bulk db operation
* Enable download for PartCategoryTemplateTable
* Update stock item export
* Updates for unit tests
* Remove xls format for now
- Causes some bug in tablib
- Surely xlsx is OK?
* More unit test updates
* Future proof migration
* Updates
* unit tests
* Unit test fix
* Remove 'field_overrides'
- field_defaults will suffice
* Remove 'xls' as download option from frontend
* Add simple unit test for data import
* PUI tweaks
---------
Co-authored-by: Lukas <76838159+wolflu05@users.noreply.github.com>
* Add new setting: BUILDORDER_REQUIRE_VALID_BOM
- Prevent build orders from being created if the assembly BOM has not been validated
* Add validation check when creating a build order
* Add unit tests
* rename var
* Single-line installer is not looking for already exsisting installs
Fixes#6891
* move update script up
* fix check
* small syntax fix
* fix missing var assigment
* fix assigment
* better message
* log found settingsmore logging
* also check for 'null'
* fix name confusion
* Adjust caching key to be numeric for user
* Add strong usermodel to colortheme
* switch to using user model everywhere for colortheme
* add some types
* use pk instead of id
* fix migration clash
* fix request
* Add <PermissionDenied /> page
* Check permissions for admin center
* Wrap <PartDetail> page in an error handler
- Display client or server errors
* Add error handlers to other detail pages
* Refactor error pages
* Add playwright tests
* Refactor component locations
* Get test to work
* updated translation base
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* updated translation base
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Calculate weighted average price when merging stock items
* refactor currency averaging
- Only add samples which have an associated value
* Revert to using two loops
* Check for div-by-zero
* Add unit testing for purchase price averaging
* feat: Add settings for SSO group sync
* feat: Handle SSO group sync
* fix(SSO): Add default group only if it is the only one
When syncing SSO groups on first user creation,
the default group should not be added if there is
already another group synced by the IdP
* docs: Add SSO goup sync instructions
* fix: Run pre-commit hooks
* i18n(SSO): Wrap settings name and description
* docs(SSO): Fix links to allauth docs
* fix(frontend): Add SSO_GROUP_KEY option
* add unittests for SSO
* docs(SSO): Make hint for example comfiguration a tip
* docs(SSO): Describe relation between SSO sync and signup group
* fix(SSO): Avoid potential key error
* feat(SSO): Create mapped group if it does not exist
* docs(SSO): Describe how groups can be created during signup
---------
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
* updated translation base
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Add "top_level" filter for PartCategory API endpoint
* Update CUI tables
* Update PUI table
* Similar updates for stock location table
* Fix "parent" field label
* Bump API version
* bump pre-commit tools
* move uv config to pyproject
* style fix
* bump pre-commit deps again
* add config for code spell
* spelling fixes
* bump regex
* bump pre-commit
* bump versions again
* roll back regex version
* reverse uv bump
* compile for 3.12
* use 3.12 for ci
* remove unused env vars
* only cache main version
* set caching dep path
* remove caching distinction
* pip installl regex
* switch back to 3.9 default
* remove install test
* reset versions
* remove tomli
* Update playwright.config.ts
---------
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
* updated translation base
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* updated translation base
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* disable patch coverage
* also test for is_active flag
* ignore edge case regarding coverage
* add tests for api logout
* test login redirects
* style fixes
* fully utilise serializer for /api/user/roles api
* ignore logout mig from cov
* bump api version as we are now documenting the roles endpoint
* ignore on migration runs for coverage
* remove dead code
* ignore potential caching errors for coverage
* test default dj_rest_auth token endpoint
* move pragma
* just ignore whole block
* move ignore back
* test for token based token revocation
* updated translation base
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Add `2fa_urls`
* Add new fields to serializer
* Add new interface to PUI interfaces
* fix url resolving
* add frontend redirect for MFA login
* redirect login if mfa is required
* Merege upstream/master into branch
* reset default login
* remove mfa states
* fix auth args
* add handler for MFA redirect auth
* Revert "Merege upstream/master into branch"
This reverts commit 717001d8f1.
* revert api version bump
* revert frontend error handling change
* reduce complexity
* reset schema text
* Add e2e test for MFA login url
* accept either POST or body data for login pre-check
* remove CUI test
* style fixes
* Add basic model for handling generic attachments
* Refactor migration
* Data migration to convert old files across
* Admin updates
* Increase comment field max_length
* Adjust field name
* Remove legacy serializer classes / endpoints
* Expose new model to API
* Admin site list filters
* Remove legacy attachment models
- Add new mixin class to designate which models can have attachments
* Update data migration
- Ensure other apps are at the correct migration state beforehand
* Add migrations to remove legacy attachment tables
* Fix for "rename_attachment" callback
* Refactor model_type field
- ContentType does not allow easy API serialization
* Set allowed options for admin
* Update model verbose names
* Fix logic for file upload
* Add choices for serializer
* Add API filtering
* Fix for API filter
* Fix for attachment tables in PUI
- Still not solved permission issues
* Bump API version
* Record user when uploading attachment via API
* Refactor <AttachmentTable /> for PUI
* Display 'file_size' in PUI attachment table
* Fix company migrations
* Include permission informtion in roles API endpoint
* Read user permissions in PUI
* Simplify permission checks for <AttachmentTable />
* Automatically clean up old content types
* Cleanup PUI
* Fix typo in data migration
* Add reverse data migration
* Update unit tests
* Use InMemoryStorage for media files in test mode
* Data migration unit test
* Fix "model_type" field
- It is a required field after all
* Add permission check for serializer
* Fix permission check for CUI
* Fix PUI import
* Test python lib against specific branch
- Will be reverted once code is merged
* Revert STORAGES setting
- Might be worth looking into again
* Fix part unit test
* Fix unit test for sales order
* Use 'get_global_setting'
* Use 'get_global_setting'
* Update setting getter
* Unit tests
* Tweaks
* Revert change to settings.py
* More updates for get_global_setting
* Relax API query count requirement
* remove illegal chars and add unit tests
* Fix unit tests
* Fix frontend unit tests
* settings management updates
* Prevent db write under more conditions
* Simplify settings code
* Pop values before creating filters
* Prevent settings write under certain conditions
* Add debug msg
* Clear db on record import
* Refactor permissions checks
- Allows extension / customization of permission checks at a later date
* Unit test updates
* Prevent delete of attachment without correct permissions
* Adjust odcker.yaml
* Cleanup data migrations
* Tweak migration tests for build app
* Update data migration
- Handle case with missing data
* Prevent debug shell in TESTING mode
* Update migration dependencies
- Ensure all apps are "up to date" before removing legacy tables
* add file size test
* Update migration tests
* Revert some settings caching changes
* Fix incorrect logic in migration
* Update unit tests
* Prevent create on CURRENCY_CODES
- Seems to play havoc with bootup sequence
* Fix unit test
* Some refactoring
- Use get_global_setting
* Fix typo
* Revert change
* Add "tags" and "metadata"
* Include "tags" field in API serializer
* add "metadata" endpoint for attachments
* updated translation base
* Fix: New translations messages.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Improve stock item tracking API query
- Cache related model lookups into single DB queries
- Significant improvements to query speed
- Ref: https://github.com/inventree/InvenTree/issues/7429
* Handle case where item does not exist in DB
* updated translation base
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Add helper functions to set/get settings
* Refactor instances of get_setting
* UPdates
* Fix for task
* Add debug messages
- Work out what is going on in CI
* add more debug
- Cannot reproduce locally?
* More debug...
* Remove debug prints
* Add better debug msg
* Simplify unit test
* Increase timeout for plugin tests
* Update validator code
* Add location type to location overview
* Remove the New Stock Item button from Stock view in case the user has not rights
* Remove the New Stock Item button from Stock view in case the user has not rights
* Add 'clear' option to 'invoke static'
* Add functions for copying static files from installed plugins
* Collect plugin static files as part of 'invoke static'
* Add 'activate' method for PluginConfig
* Run as part of `invoke plugins`
* updated translation base
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Add "choices" field to PartTestTemplate
- Will allow validation of "value" field on StockItemTestResult
* Run validation against StockItemTestResult
* Export SKU in stock item resource
* Add "choices" field to PartTestTemplate
- Will allow validation of "value" field on StockItemTestResult
* Run validation against StockItemTestResult
* Expose 'choices' to serializer
* Update unit test
* Add unit test for test result validation
* Add 'choices' field for CUI forms
* Add "choices" field to PUI form
* Add 'choices' column to PartTestTemplateTable
* memoize stockitemtestresult fields
- Adjust field type of "value" field based on template choices
* Bump API version
* updated translation base
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* PanelType.content is now required
* Make panel content non-optional
- Makes it easier to see which panels still need to be implemented
* Implement a panel
* Install mdxeditor
* Setup basic toolbar
* Refactoring
* Add placeholder for image upload
* Add fields to link uploaded notes to model instances
* Add custom delete method for InvenTreeNotesMixin
* Refactor CUI notes editor
- Upload model type and model ID information
* Enable image uplaod for PUI editor
* Update <NotesEditor> component
* Fix import
* Add button to save notes
* Prepend the host name to relative image URLs
* Disable image resize
* Add notifications
* Add playwright tests
* Enable "read-only" mode for notes
* Typo fix
* Styling updates to the editor
* Update yarn.lock
* Bump API version
* Update migration
* Remove duplicated value
* Improve toggling between edit mode
* Fix migration
* Fix migration
* Unit test updates
- Click on the right buttons
- Add 'key' properties
* Remove extraneous key prop
* fix api version
* Add custom serializer mixin for 'notes' field
- Pop the field for 'list' endpoints
- Keep for detail
* Update to NotesEditor
* Add unit test
* Adjust situations in which cache is disabled
- Prevent cache when running a number of housekeeping commands
* Add 'spectacular' to list of excluded commands
* Generate codes as list
- Ensure consistent ordering (for CI)
* Debug currency codes list
* Bump API version
* Add new global setting for currency options
- Moving away from external configuration
- Refactor currency support code into new file
* Refactoring
- Move functions into currency.py
* Limit choices for default currency
* Improve validation
* Adds data migration for existing currency selection
* Docs updates
* Remove currency config from external settings
* bump api version
* Add debug message
* Add unit tests
* Fix after_change_currency func
* Fix after_change_currency func
* Revert change to after_chance_currency
* Revert other change
* updated translation base
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Add new setting to bypass "shipped" status
* Bypass "shipped" status optionally
* Update setting description string
* Update unit tests
* Refactor location of status_codes
* Link source code into docs
* Add stock status codes
* And the build order too
* Fix import
* Enforce query count middleware for testing
* Cache "DISPLAY_FULL_NAMES" setting
- Much better API performance
* Update unit_test.py
- Add default check for max query count
* Rework unit_test.py
- x-django-query-count header does not get passed through testing framework
* Adjust middleware settings
* Fix debug print
* Refactoring unit_test.py
* Adjust defaults
* Increase default query threshold
- We can work to reduce this further
* Remove outdated comment
* Install django-middleware-global-request
- Makes the request object globally available
- Cache plugin information against it
* Cache "plugins_checked" against global request
- reduce number of times we need to recalculate plugin data
* Cache plugin information to the request
- Prevent duplicate reloads if not required
* Simplify caching of settings
* Revert line
* Allow higher default counts for POST requests
* Remove global request middleware
- Better to implement proper global cache
* increase CI query thresholds
* Fix typo
* API updates
* Unit test updates
* Increase default MAX_QUERY_TIME
* Increase max query time for plugin functions
* Cleanup barcode unit tests
* Fix part test
* Update more tests
* Further unit test updates
* Updates for unit test code
* Fix for unit testing framework
* Fix
* Reduce default query time
* Increase time allowance
* Refactor part category tree
- New "NavigationTree" using native mantine components
- Make it generic, too
* Replace existing <StockLocationTree /> component
* Adjust API filtering for location tree endpoint
* Added playwright tests
* Update api filter classes
* Fix for DetailsImage
- Update to @mantine/core had changed the <AspectRatio> component
* fix for identifierString function
* Adjust playwright tests
* updated translation base
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Bug fix for label printing with plugin on CUI
- Missed edge case in recent refactor
* Fix typo
* Support non-pk fields
* fix a number of typos
* js fixes
* - move reqs file to contrib
- detect previously used python version
- safe extra requirements to INSTALLER_EXTRA
* add missing fi
* move site setting
* Updates for metadata information
- Override 'label' values with 'verbose_name' values
- Only if 'label' is *not* translated, but 'verbose_name' is
- Allows the translated model fields name to be pushed through to the metadata framework
* Remove unused import
* Add unit testing for metadata lookup
* Update serializer: allow 'category' to be blank
* Bump API version
* Fix for unit test
* Update docs
- Add note about permission denied error
* Add macro for generating link to github code
* Implement similar feature for source directory links
* Adds helper function for link checking
* Allow for specification of "raw" file links
* Remove debug statement
* Generate list of available invoke tasks
* updated translation base
* Fix: New translations django.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* updated translation base
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Fix sales order shipment / completed buttons
- Template logic needed tweaks
* Adjust logic for completing a sales order
* Tweak UV version
- Trying to get CI to run properly
* Pin version
* Ignore uv
* Cleanup
* Fix another --uv command
* Add 'adjustValue' callback for form field
* Cast checkbox values to boolean
* Call "onChange" callbacks
* Implement dynamic "data" field for PartParameter dialog
- Type of field changes based on selected template
* Add playwright unit tests
* Add labels to table row actions
* linting fixes
* Adjust playwright tests
* Adds a new "generic" ReportTemplate model
* expose API endpoints
* Update model / migrations / serializer
* Add new mixin class to existing database models
* - Add detail view for report template
- Revert filters field behaviour
* Filter report list by provided item IDs
- Greatly simplify filtering logic compared to existing implemetation
- Expose to API schema
* Create data migration for converting *old* report templates
* Ignore internal reports for data migration
* Add report mixin to StockLocation model
* Provide model choices in admin interface
* Offload context data generation to the model classes
* Remove old report template models
* Refactor JS code in CUI
* Fix for API filtering
* Add data migration to delete old models
* Remove dead URL
* Updates
* Construct sample report templates on app start
* Bump API version
* Typo fix
* Fix incorrect context calls
* Add new LabelTemplate model
- ReportTemplate and LabelTemplate share common base
- Refactor previous migration
* Expose to admin interface
* Add in extra context from existing label models
* Add migration to create LabelTemplate instances from existing labels
* Add API endpoints for listing and updating LabelTemplate objects
* Adjust 'upload_to' path
* Refactor label printing
* Move default label templates
* Update API endpoints
* Update migrations
* Handle LookupError in migration
* Redirect the "label" API endpoint
* Add new model for handling result of template printing
* Refactor LabelPrinting mixin
* Unlink "labels" app entirely
* Fix typo
* Record 'plugin' used to generate a particular output
* Fix imports
* Generate label print response
- Still not good yet
* Refactoring label printing in CUI
* add "items" count to TemplateOutput model
* Fix for InvenTreeLabelSheetPlugin
* Remove old "label" app
* Make request object optional
* Fix filename generation
* Add help text for "model_type"
* Simplify TemplateTable
* Tweak TemplateTable
* Get template editor to display template data again
* Stringify template name
- Important, otherwise you get a TypeError instead of TemplateDoesNotExist
* Add hooks to reset plugin state
* fix context for StockLocation model
* Tweak log messages
* Fix incorrect serializer
* Cleanup TemplateTable
* Fix broken import
* Filter by target model type
* Remove manual file operations
* Update old migrations
- Remove references to functions that no longer exist
* Refactor asset / snippet uploading
* Update comments
* Retain original filename when editing templatese
* Cleanup
* Refactor model type filter to use new hook
* Add placeholder actions for printing labels and reports
* Improve hookiness
* Add new ReportOutput class
* Report printing works from PUI now!
* More inspired filename pattern for generated reports
* Fix template preview window
- Use new "output" response field across the board
* Remove outdated task
* Update data migration to use raw SQL
- If the 'labels' app is no longer available, this will fail
- So, use raw SQL instead
* Add more API endpoint defs
* Adds placeholder API endpoint for label printing
* Expose plugin field to the printing endpoint
* Adds plugin model type
* Hook to print labels
* Refactor action dropdown items
* Refactor report printing for CUI
* Refactor label print for CUI
- Still needs to handle custom printing options for plugin
* Fix migration
* Update ModelType dict
* playwright test fix
* Unit test fixes
* Fix model ruleset associations
* Fix for report.js
* Add support for "dynamic" fields in metadata.py
* Add in custom fields based on plugin
* Refactoring
* Reset plugin on form close
* Set custom timeout values
* Update migration
- Not atomic
* Cleanup
* Implement more printing actions
* Reduce timeout
* Unit test updates
* Fix part serializers
* Label printing works in CUI again
* js linting
* Update <ActionDropdown>
* Fix for label printing API endpoint
* Fix filterselectdrawer
* Improve button rendering
* Allow printing from StockLocationTable
* Add aria-labels to modal form fields
* Add test for printing stock item labels from table
* Add test for report printing
* Add unit testing for report template editing / preview
* Message refactor
* Refactor InvenTreeReportMixin class
* Update playwright test
* Update 'verbose_name' for a number of models
* Additional admin filtering
* Playwright test updates
* Run checks against new python lib branch
(temporary, will be reverted)
* remove old app reference
* fix testing ref
* fix app init
* remove old tests
* Revert custom target branch
* Expose label and report output objects to API
* refactor
* fix a few tests
* factor plugin_ref out
* fix options testing
* Update table field header
* re-enable full options testing
* fix missing plugin matching
* disable call assert
* Add custom related field for PluginConfig
- Uses 'key' rather than 'pk'
- Revert label print plugin to use slug
* Add support for custom pk field in metadata
* switch to labels for testing
* re-align report testing code
* disable version check
* fix url
* Implement lazy loading
* Allow blank plugin for printing
- Uses the builtin label printer if not specified
* Add printing actions for StockItem
* Fix for metadata helper
* Use key instead of pk in printing actions
* Support non-standard pk values in RelatedModelField
* pass context data to report serializers
* disable template / item discovery
* fix call
* Tweak unit test
* Run python checks against specific branch
* Add task for running docs server
- Option to compile schema as part of task
* Custom branch no longer needed
* Starting on documentation updates
* fix tests for reports
* fix label testing
* Update template context variables
* Refactor report context documentation
* Documentation cleanup
* Docs cleanup
* Include sample report files
* Fix links
* Link cleanup
* Integrate plugin example code into docs
* Code cleanup
* Fix type annotation
* Revert deleted variable
* remove templatetype
* remove unused imports
* extend context testing
* test if plg can print
* re-enable version check
* Update unit tests
* Fix test
* Adjust unit test
* Add debug statement to test
* Fix unit test
- Labels get printed against LabelTemplate items, duh
* Unit test update
* Unit test updates
* Test update
* Patch fix for <PartColumn> component
* Fix ReportSerialierBase class
- Re-initialize field options if not already set
* Fix unit test for sqlite
* Fix kwargs for non-blocking label printing
* Update playwright tests
* Tweak unit test
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* Bare bones <StockTrackingTable /> component
* Implement details panel for StockTrackingTable
* Remove unused userState hook
* Expand RenderInstance to include link
* Allow inline renderers to display links
* Refactor framework for generating batch codes
- Provide additional kwargs to plugin
- Move into new file
- Error handling
* Implement API endpoint for generating a new batch code
* Fixes
* Refactor into stock.generators
* Fix API endpoint
* Pass time context through to plugins
* Generate batch code when receiving items
* Create useGenerator hook
- Build up a dataset and query server whenever it changes
- Look for result in response data
- For now, just used for generating batch codes
- may be used for more in the future
* Refactor PurchaseOrderForms to use new generator hook
* Refactor StockForms implementation
* Remove dead code
* add OAS diff
* fix ref
* fix ref again
* wrong branch, sorry
* Update src/frontend/src/hooks/UseGenerator.tsx
Co-authored-by: Lukas <76838159+wolflu05@users.noreply.github.com>
* Bump API version
* Do not override batch code if already generated
* Add serial number generator
- Move to /generate/ API endpoint
- Move batch code generator too
* Update PUI endpoints
* Add debouncing to useGenerator hook
* Refactor useGenerator func
* Add serial number generator to stock form
* Add batch code genereator to build order form
* Update buildfields
* Use build batch code when creating new output
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
Co-authored-by: Lukas <76838159+wolflu05@users.noreply.github.com>
* Expose filter for "bom_valid" status
* Expose part filter for "starred" status
* Bump API version
* Add simple unit test
* Add unit test for "starred" filtering
* docs: Update docker compose dev setup
* docs: Fix example plugin date
Date must be iso formatted, otherwise exception is raised
* docs: Update plugin paths to new folder structure
* docs: fix typo, remove temporary containers afterwards
* Prevent deletion of part which is used in an assembly
* add 'validate_model_deletion' option to ValidationMixin plugun
* Add global setting to control part delete behaviour
* Update settings location
* Unit test updates
* Further unit test updates
* Fix typos
* Fix CUI URLs
* Fix for plugin setting API
- Fix conflict between "key" for PluginConfig and "key" for setting
- Needs to be "plugin" for plugin lookup, which accesses the "key" field in the PluginConfig model
* Fix for editing setting in PUI
* Add 'r' back in
* Remove debug code
* Update unit tests
* Bump API version
* Another unit test fix
* Update admin site
- Implement 'autocomplete' for more fields
- Improves admin loading time
* Add "admin" buttons to the PUI interface
* Only allow superuser access
* Use modal hook for creating new attachments
* Add "edit" and "delete" modals for attachment table
* Fix for drag-and-drop zone
- Update to match mantine v7
* Fix link clicking
* Fix call to cancelEvent
* Add placeholder for more unit tests
* Refactor "plugin activate" dialog
- Use hooked modal
* Remove actions from drawer
- Used dynamic modal code which is super buggy
* Update plugin drawer / table
* Refactor settings management:
- Use proper hooked form
- Reduce code duplication
- Run single callback for each <SettingList>
* Add error boundary
* Update ErrorTable
- Use useDeleteApiFormModal
* Refactor ManufacturerPartParameter table
- Use hooked modals
* Refactor existing tables
- Pass table state to forms
* Ensure table is reloaded
* Refactor ManufacturerPartTable
* Code cleanup
* More cleanup
* Lookup plugin by slug
- Adjust plugin API to use plugin key and not (variable) pk value
* Fix for plugin table in CUI (legacy interface)
* Fix API endpoint layout:
- Move special endpoints first
- Fix "metadata" endpoint
- Allow custom "lookup_field" attribute for MetadataView
* Add "active_plugins" count to RegistryStatusView
* Updates for PUI
- Plugin management now uses slug rather than pk
* Bump API version
* Remove unused code
* Adds index on 'key' field for PluginConfig model
* Fix URL structure
* Unit test updates
* Unit test updates
* More unit test fixes
* Copy requirements file
* Test more files when building docker image
* Refactor install task
* Raise exception
* Run install task
* Fix typos
- The tests work!
* updated translation base
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Handle stock item delete in PUI
* Support deletion of stock location
* Delete part category
* Some refactoring of the TableField approach
- Still needs some work
- Code can be made a lot cleaner here
* Use mantine components
* Fix incorrect import
* Update ServerInfoModal
* Further table refactoring
* Implement delete part function
* updated translation base
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Use new setting to determine if item can be moved
* Add new setting to front-end
* Invert double inversion
* Prevent empty stock tracking entry
* Updated unit tests
* Fix rendering of FailedTasksTable
* updated translation base
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Fix for details URl
- Do not open as a new link
- Instead, use internal 'navigate'
- Otherwise, triggers a login sequence again
- Major improvement in workflow
* Fix InvenTreeTable
* Refactor
* Handle case where no model available
* Fix default return type
* Use proper mantine table components
* Fix for BomTable click-through
* Details tweaks
* Fix labels
* Implement total price detail
* Cleanup
* Rendering tweaks
* Fix for Details.tsx
* Refactor login state management
- Previously relied only on presence of cookie
- Cookie may not actually be *valid*
- Inspect actual login state by looking at userState values
- Ensures better sequencing of global state API requests
- Login state is now correctly preseed across browsers
* Ignore errors for user/me/ API endpoint in playwright test
* Do not request notifications unless logged in
* Prevent duplicate licenses
* Update src/frontend/src/views/DesktopAppView.tsx
Co-authored-by: Matthias Mair <code@mjmair.com>
* Simplify checkLoginState
* Fix bug in return types
* Update playwright tests
* linting
* Remove error msg
* Use token auth for API calls
- Will (hopefully) allow us to bypass csrfmiddle request handling?
* Refetch token if not available
* Use cache for DISPLAY_FULL_NAMES setting
* Update src/frontend/tests/baseFixtures.ts
Co-authored-by: Matthias Mair <code@mjmair.com>
* PUI test updates
* Tweak doLogout function
* Revert change to baseFixtures.ts
* Cleanup
* Fix highlighted property
* Test cleanup
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* use state to handle rerenders
* use setItem to cause rerenders on point
* add scan tests
* increase timeout
* fix name for test file
* renmae testcases
* Add ADA texts to help with testins / screen readers
* Add general function tests for scan page
* more coverage
* Revert "more coverage"
This reverts commit 67f600fb5e.
* Set build default location on save
* Update destination location in PUI form
* Set location for generated stock outputs
* Construct buildorderoutput fieldset
* Add "location" field to BuildOrderOutput serializer
* Create new build outputs from PUI
* Refacator StockItemTable
* Support serial_numbers field
* Add new API endpoints for build order operations
* Implement "build output complete" form
* Refactor common table
* Implement ScrapBuildOutput form
* Implement BuildOutputCancel form
* Update API version
* Fix BuildCancelSerializer
* Change name of serializer field
* Perform bulk_delete operation
* Implement BuildCancel in PUI
* Handle null build
* Bump API version
* Improve query efficiency for build endpoints
* Offload allocation cleanup in cancel task
* Handle exception if offloading fails
* Offload auto-allocation of build order stock
* Add unit test for cancelling build order *and* consuming stock
* updated translation base
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Add field description to the currency_exchange_retrieve API call
* Bump API version
* Do not call constuctor for the serializer exposed for extend schema in the CurrencyExchangeView
* updated translation base
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Remove use of deprecated imp.load_source
The entire `imp` module has been removed from Python 3.12. This patch applies the recommended replacement using `importlib`.
* Fix usage of from importlib.metadata.entry_points to work with newer importlib & Python 3.12
* Update registry.py
Fix order of imports
* Use importlib.util.module_from_spec() instead of deprecated load_module()
* auto-fixed import style (isort)
* enable py 12
* run coverage for lower and upper bound
* fix style error
* make import conditional
* fix?
* fix env
* style fix
* only use new loader on 3.12
* fix order
* fix module loading
* reimplement assertDictContainsSubset
* remove old testing alias
---------
Co-authored-by: Thea Flowers <thea@winterbloom.com>
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
* updated translation base
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* ensure no errors are thrown in the console
* fix key issue
* add missing keys
* fix table order
* fix wrong imports
* add missing key
* fix accessor ref
* fix style
* mark internal fetching errors and ignore them
* do not raise internal errors
* ignore barcode api calls
* style fix
* do not raise on chrome errors
* refactor url
* more exclusion
* remove duplicate assertation
* Update build line allocation table
- Allow display of "tracked" items in main allocation table
* Add resolveItem function for finding nested items
* Update BuildLineTable
* Allow BuildLineList to be ordered by 'trackable' field
* Bump API version
* Building out columns
* Table tweaks
* Fetch list of required test templates
* Tweaks
* Add placeholders for table actions
* Add typing
* Add placeholder buttons
* Update columns
* Add button to duplicate build order
* Add placeholder cancel action
* Refactoring
* Edit company from table
* Change "create" to "add"
* Change more from Create to Add
* add spotlight
* [PUI] Quick commands pallet
Fixes#5888
* add testing for new commands
* add text input testing
* only test backend if code changed
* add trans files
* fix testing text
* always push coverage
* add nav state to manage navigation state
* add navigation action and test
* make test faster
* fix typo
* use texts instead
* fix tests for linux
* use var to determine action key
* Revert "use texts instead"
This reverts commit 7771189556.
* add wait for input
* split out keyboard based tests
* split ou test
* add upload
* revert assert change
* adjust reporting settings
* ignore error code
* fix reporter config
* add full info suit (+tests)
* make tests more accurate
* license modal fixes
* unify icons
* add custom actions registering
with removal on page refresh
* only upload report data if the tests failed
* Revert "add trans files"
This reverts commit 28d96e058f.
* adjust url that iw waited for
* try an await and body locator for keypresses
* test registering addition actions
* extend testing for actions
* add doclink and test
* merge tests
* add modals test
* use quick login
* reduce diff
* fix test
* open packages too
* expand to frontend
* rnsure keys are unique
* ensure no errors in console
* add QR code modal too
* add intrestials to CUI
* Add intrestial to report settings
* add option to docs
* rename to banner
Fixes#6554
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
* change name
---------
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
* use global pin for requests
* unify on yaml for workflo files
* format workflow files
* pin action versions
* fix pinned version
* use system venv
* switch args
* remove uv for now and add setting for pyyaml
* use requirements file
* also switch on docker flow
* generate hashes
* added hashes to reqs
* add hashes for CI too
* add hash checking
* require hashes everywhere possible
* require hashes where possible in docker
* Update build line allocation table
- Allow display of "tracked" items in main allocation table
* Add resolveItem function for finding nested items
* Update BuildLineTable
* Allow BuildLineList to be ordered by 'trackable' field
* Bump API version
* Only render categories in overview if there is data
Red #7025
* add option to disable accordions
* remove unneeded log
* make optional
* add disabled state to panels
* add missing panels to overview
* use enum for refs
* add quickjump anchors
* use navigation function instaed
* make links more distinguishable
* fix type
* format ticks using currency
* add tooltip formatter
* fix type
* add pricing tests
* move test
* add more playground tests
* use plattform for logins
* add id for chart for easier testing
* test hover state and bom pricing details
* test linked rows works
* disable flaky test
* cleanup tests
* adjust test assumptions to dataset
* fix test
* remove second test stage
* remove unnecessary step
* open up tab instaed of checking for it
* add test for Dashboard
* add Supplier Pricing test
* add internal pricing test
* added variant pricing test
* add test for Purchase History
* make sure button is enabled
* remove submit
* remove timeout
going back to default 30s
* make less ambigious
* reintroduce higher timeout
* change url back
* Revert "change url back"
This reverts commit 9d20d2a86e.
* fix test
* just use cancel
* revert url change
* remove timeput
* use PUI URL - baseUrl is pointing to CUI
* fix url for testin
* reintroduce options
* use default url
* disable non working test for now
* run in debug mode
* use PUI for testing to actually get coverage
* Add contenttype APIs
* add plugin and id identifier
* resolve via modelname
* bump API version
* differentiate model view ids
* add API test
* remove unneeded response
* updated translation base
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* use global pin for requests
* unify on yaml for workflo files
* format workflow files
* pin action versions
* fix pinned version
* use system venv
* switch args
* remove uv for now and add setting for pyyaml
* fix qc args
* bix doc paths
* Add "active" field to Company model
* Expose 'active' parameter to API
* Fix default value
* Add 'active' column to PUI
* Update PUI table
* Update company detail pages
* Update API filters for SupplierPart and ManufacturerPart
* Bump API version
* Update order forms
* Add edit action to SalesOrderDetail page
* Enable editing of ReturnOrder
* Typo fix
* Adds explicit "active" field to SupplierPart model
* More updates
- Add "inactive" badge to SupplierPart page
- Update SupplierPartTable
- Update backend API fields
* Update ReturnOrderTable
- Also some refactoring
* Impove usePurchaseOrderLineItemFields hook
* Cleanup
* Implement duplicate action for SupplierPart
* Fix for ApiForm
- Only override initialValues for specified fields
* Allow edit and duplicate of StockItem
* Fix for ApiForm
- Default values were overriding initial data
* Add duplicate part option
* Cleanup ApiForm
- Cache props.fields
* Fix unused import
* More fixes
* Add unit tests
* Allow ordering company by 'active' status
* Update docs
* Merge migrations
* Fix for serializers.py
* Force new form value
* Remove debug call
* Further unit test fixes
* Update default CSRF_TRUSTED_ORIGINS values
* Reduce debug output
* updated translation base
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Add "currency" to CompanyBriefSerializer
* Fix nav.js bug - potential illegal chars in panel name
* Update CUI tables
* Update PUI tables
* Bump API version
* Only render categories in overview if there is data
Red #7025
* add option to disable accordions
* remove unneeded log
* make optional
* add disabled state to panels
* add missing panels to overview
* use enum for refs
* add quickjump anchors
* use navigation function instaed
* make links more distinguishable
* fix type
* format ticks using currency
* add tooltip formatter
* Allow click-through from BOM pricing table
* Allow sorting by price in BOM table
* Add "Total Price" column to BOM table
* Enable part table to be sorted by price range
* Enable click-through on VariantPricing table
* Update quantity columns for BOM tables
* Improve rendering for UsedInTable
* Add recharts package
- Brings us in-line with mantine v7
* Add skeleton pricing page
* Fetch pricing data
* Rough implementation of variant pricing chart
- Needs better labels for tooltip and axis
* Cleanup
* More cleanup
* Improve rendering
* Add pricing overview
* Add pie chart for BOM pricing
- Needs extra work!
* Split components into separate files
* Backend: allow ordering parts by pricing
* Bump API version
* Update VariantPricingPanel:
- Table drives data selection now
* Refactor BomPricingPanel
- Table drives the data
* Allow BomItemList to be sorted by pricing too
* Sort bom table
* Make record index available to render function
* Refactor BomPricingPanel
- Better rendering of pie chart
* Update pricing overview panel
* Further updates
- Expose "pricing_updated" column to API endpoints
- Allow ordering by "pricing_updated" column
* Update API endpoint for PurchaseOrderLineItem
* Implement PurchaseOrderHistory panel
* Cleanup PurchaseHistoryPanel
* Enhance API for SupplierPriceBreak
* Implement SupplierPricingPanel
* Fix for getDetailUrl
- Take base URL into account also!
* Further fixes for getDetailUrl
* Fix number form field
* Implement SupplierPriceBreakTable
* Tweaks for StockItemTable
* Ensure frontend is translated when compiling static files
* Fixes for BomPricingPanel
* Simplify price rendering for bom table
* Update BomItem serializer
- Add pricing_min_total
- Add pricing_max_total
- Fix existing 1+N query issue
* Use values provided by API
* Fix BomItem serializer lookup
* Refactor pricing charts
* Fix for VariantPricingPanel
* Remove unused imports
* Implement SalePriceBreak table
- Refactor the InternalPriceBreak table to be generic
* Allow price breaks to be ordered by 'price'
* Display alert for no available data
* Update backend API filters
* Allow ordering by customer
* Implement SaleHistoryPanel
* Allow user to select pie or bar chart for BOM pricing detail
* Remove extra padding
* updated translation base
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Add 'focus' property for ApiFormProps
* Attempt to focus on particular field
* Improve setFocus hook
- Set the focus at the appropriate time
- Auto focus on first field if not specified
* Add custom focus field
* Update useEffect property list
* add coverage to PUI
* fix testing command
* always do all steps
* fix test assumptions
* add test for serving and logging into pui from django / cui tech stack
* fix up coverage
* fix intentation
* remove paralell flags
* remove coverage finish step
* remove flag
* change names
* add full clickdown test
* more tests
* more tests
* sprinkle in some timeouts
* try using admin
* disable page 1 tests for now
* remove additional tests for now
* only build sourcemaps if coverage is enabled
* fix sourcemap assumption
* add more tests
* fix test
* Update package.json
* move tests to seperate file
* rename test files
* move defaults to seperate file
* centralise user creds
* lower migration level
* re-add page 1
* rename and split tests
* split out problematic test
* Add thumbnail building step
* remove unneded steps
* fix filename
* add more logging
* add sourounding table
* add missing tabs
* wait instead of click
* fix test
* split tests out more
* disable test for stock
* tes part sub-pages
* split tests more
* add company tests
* more sales testing
* split parts testing
* Add test for settings + admin center
* updated translation base
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Allow pk field spec for row click
* Fix row click-through for UsedInTable
* Cleanup "details" view for part page
* Add 'stock' column to parametric part table
* Add details badges to some pages
* Add extra badges to PartDetailPage
* add spotlight
* [PUI] Quick commands pallet
Fixes#5888
* add testing for new commands
* add text input testing
* only test backend if code changed
* add trans files
* fix testing text
* always push coverage
* add nav state to manage navigation state
* add navigation action and test
* make test faster
* fix typo
* use texts instead
* fix tests for linux
* use var to determine action key
* Revert "use texts instead"
This reverts commit 7771189556.
* add wait for input
* split out keyboard based tests
* split ou test
* add upload
* revert assert change
* adjust reporting settings
* ignore error code
* fix reporter config
* add full info suit (+tests)
* make tests more accurate
* license modal fixes
* unify icons
* add custom actions registering
with removal on page refresh
* only upload report data if the tests failed
* Revert "add trans files"
This reverts commit 28d96e058f.
* adjust url that iw waited for
* try an await and body locator for keypresses
* test registering addition actions
* extend testing for actions
* add doclink and test
* merge tests
* append more apps
* set source
* use labels to force full CI suit
* always check for label
* use newer syntax
* remove unneeded carryforward flag
* improve action names
* remove unused upload steps
* enable discovery of locate test
* remove wrong module
* delete all ( :-) )lines for upload
* remove init for now
* add carryfoward back in again
* disable flaky test
* always run finsh step
* deactivate machine test for now
* specify refs explicitly
* add docker exception
* use xml for coverage info
* dummy fix
* remove dummy fix
* dummy change
* always export
* change path to ensure basepath is submitted
* add more paths
* reverst isort change
* remove unused html export
* remove paralell
* add plain InvenTree too
* Update pyproject.toml
* reset paths
* Update qc_checks.yaml
* Update qc_checks.yaml
* fix coverage runner setting
* fix coverage tool path
* use move, not copy
* ignore tmp
* reset isort settings
* use relative files for reporting
* Revert "use relative files for reporting"
This reverts commit 1f662bfb97.
* only run after at least 1 succeeds
* add TODO
* remove coverage subdir run
* also force migrations
* add coverage to migrations
* fix conditional for migration force check
* always upload coverage
* disable flaky test
* fix tests
* wait for migrations
* re-add function arg?
* adjust coverage targets
* add no-cov for fixes of flaky tests
* remove dummy
* revert to "old" upload method"
* append more apps
* set source
* use labels to force full CI suit
* always check for label
* use newer syntax
* remove unneeded carryforward flag
* improve action names
* remove unused upload steps
* enable discovery of locate test
* remove wrong module
* delete all ( :-) )lines for upload
* remove init for now
* add carryfoward back in again
* disable flaky test
* always run finsh step
* deactivate machine test for now
* specify refs explicitly
* add docker exception
* remove paralell
* Update qc_checks.yaml
* Update qc_checks.yaml
* fix coverage tool path
* use move, not copy
* ignore tmp
* only run after at least 1 succeeds
* add TODO
* remove coverage subdir run
* also force migrations
* add coverage to migrations
* fix conditional for migration force check
* always upload coverage
* fix tests
* wait for migrations
* re-add function arg?
* adjust coverage targets
* add no-cov for fixes of flaky tests
* add migration checks to codecov
* add codecov upload
* add to readme
* add flags
* dummy change
* dummy change
* switch to inventree org
* add codecov yaml
* lower threshold (for now)
see https://github.com/inventree/InvenTree/pull/6945 for a possibility to get it up again
* add coverage to PUI
* fix testing command
* always do all steps
* fix test assumptions
* add test for serving and logging into pui from django / cui tech stack
* fix up coverage
* fix intentation
* remove paralell flags
* remove coverage finish step
* remove flag
* change names
* add full clickdown test
* more tests
* more tests
* sprinkle in some timeouts
* try using admin
* disable page 1 tests for now
* remove additional tests for now
* only build sourcemaps if coverage is enabled
* fix sourcemap assumption
* Update .github/workflows/qc_checks.yaml
Co-authored-by: Lukas <76838159+wolflu05@users.noreply.github.com>
* fix package.json
* add finish step
---------
Co-authored-by: Lukas <76838159+wolflu05@users.noreply.github.com>
* updated translation base
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Set INVENTREE_SITE_URL
* Fix incorrect zh trans
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Add test start, end date and test station to the next gen UI
* [PUI]Add new test fields to the forms too
* Fix review comments
* Fix review comments #2
* Adjust default values for test result fields
* Add helper functions:
- current_time()
- current_date()
Handles timezone "awareness"
* Use new helper function widely
* Update defaults - do not use None
* Allow null field values
* Add BUILDORDER_REQUIRE_RESPONSIBLE setting
- If set, build orders must specify a responsible owner
* Add responsible required setting to other order models:
- PurchaseOrder
- SalesOrder
- ReturnOrder
* Add unit test
* Adjust unit tests
* Settings updates:
- Only check settings for global and user settings
- Plugin settings are not defined at run-time
* typo fix
* More spelling fixes
* Specify responsible owner pk
* add security commitment
* fix badge path
* set token permissions
see https://github.com/inventree/InvenTree/security/code-scanning/48
* add more chapters
* break up flow text
* spellchecking
* Revert "set token permissions"
This reverts commit 6deb33000f.
* Add pattern for social media providers restrictive APIs
* add security commitment
* fix badge path
* set token permissions
see https://github.com/inventree/InvenTree/security/code-scanning/48
* add more chapters
* break up flow text
* spellchecking
* clean diff
* bump setup-python to node 20 version
* fix docker version too
* remove unuses api method
* update API docstrings to be more acurate
* updated typing for fields
* upate serializer to avoid collision
* fix typing for API generation
* fix ModelChoiceFilter inference
* fix typing for manufacturer
* bump API version
* fix test
* fix type checker warnings
* fix api path
* updated translation base
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix ru translations
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* [BUG] Inventree fiddles with files directly rather than using Django Storage api
Fixes#2585
* PEP fix
* clean diff
* move template discovery into central location
* more moving file operations
* fix paths
* and another path fixing
* more fixes
* fix typing
* switch config back to local
* revert locale stats
* remove dependency for template copy step
* fix typing
* log more
* log data
* more logging
* pass filenames as strings
* clean diff
* set yarn version
* bump yarn to 4.1
* update dependency file
* upgrade all deps as far as possible
* cleanup diff
* bump node
* ignore lock in pre-commit
* fix lockfile
* bump yarn version
* switch back to yarn 1 for now
* only run if in an inventree org repo
* only sign into docker hub if username set
* use repo name for ghcr name
* renmae to not cause confusion
* rename vars
* use seperate step
* disable a bunch of stuff for testing
* use echo instead
* Revert "disable a bunch of stuff for testing"
This reverts commit 0ab5ff6d6d.
* Validate default value field for PartCategoryParameterTemplate
- Only if unit checks are enforced
- Only if default value is not blank
* Add basic table for part category parameter templates
* Add functions to create / edit / delete via table
* Fix unit testing
* Impove link rendering in attachment table
* Add "updateRecord" hook for useTable
* Refactoring
Make use of new table.updateRecord method
* Refactor model row clicks
- Just need to provide a model type
* Fix BuildLineTable
* Re-add required imports
* Remove hard-coded paths
* Quick attempt at fixed form footer
* slightly improve on lower res devices
* Squashed commit of the following:
commit 06c7ebfc21
Author: Oliver <oliver.henry.walters@gmail.com>
Date: Sat Mar 16 09:11:57 2024 +1100
Update docker_install.md (#6723)
* Update docker_install.md
Add note about external access
* Update docker_install.md
commit a00d5ab4b5
Author: Oliver <oliver.henry.walters@gmail.com>
Date: Fri Mar 15 17:53:58 2024 +1100
Disable BOM requirement (#6719)
* Add new setting STOCK_ENFORCE_BOM_INSTALLATION
- Defaults to True (legacy)
* Add logic to bypass BOM check
* Update CUI to reflect new logic
* Render InstalledItemsTable in PUI
commit 160d014e44
Author: Oliver <oliver.henry.walters@gmail.com>
Date: Fri Mar 15 17:12:53 2024 +1100
[PUI] Details Pages (#6718)
* Add "details" view to SupplierPart page
* Fix PartActions
* Add placeholder for actions
* Add "title" option to DetailsTable
* Add edit form to supplier part page
* Fix link to manufacturer part
* Add "details" view to ManufacturerPartDetail page
* Add edit for ManufacturerPart
* Create new manufacturer part from company table
* Tweak ActionIcon
commit 57a1a81e9b
Author: Oliver <oliver.henry.walters@gmail.com>
Date: Fri Mar 15 12:24:17 2024 +1100
Reporting: Build line label fix (#6717)
* Fix "BuildLine" label in PUI
- Point to "buildline" not "build"
* Prevent escape closing template ediror
* Update report docs
* Fix for format_number
- Prevent number from being represented as scientific notation
commit 0196dd2f60
Author: Lavissa <lavissawow@gmail.com>
Date: Fri Mar 15 02:06:18 2024 +0100
[PUI/Feature] Integrate Part "Default Location" into UX (#5972)
* Add default parts to location page
* Fix name strings
* Add Stock Transfer modal
* Add ApiForm Table field
* temp
* Add stock transfer form to part, stock item and location
* All stock operations for Item, Part, and Location added (except order new)
* Add default_location category traversal, and initial PO Line Item Receive form
* .
* Remove debug values
* Added PO line receive form
* Add functionality to PO receive extra fields
* .
* Forgot to bump API version
* Add Category Default to details panel
* Fix stockItem query count
* Fix reviewed issues
* .
* .
* .
* Prevent root category from checking parent for default location
commit 6abd33f060
Author: Oliver <oliver.henry.walters@gmail.com>
Date: Fri Mar 15 00:24:48 2024 +1100
Report enhancements (#6714)
* Add "enabled" filter to template table
* Cleanup
* API endpoints
- Add API endpoints for report snippet
- List endpoint
- Details endpoint
* Update serializers
- Add asset serializer
- Update
* Check for duplicate asset files
- Prevent upload of duplicate asset files
- Allow re-upload for same PK
* Duplicate checks for ReportSnippet
* Bump API version
commit cbd94fc4b5
Author: Oliver <oliver.henry.walters@gmail.com>
Date: Thu Mar 14 23:06:11 2024 +1100
Fix for caddyfile (#6712)
- Add "authorization" to Access-Control-Allow-Headers
- CORS requests actually *work* now
commit ec5ff6408d
Author: Lukas <76838159+wolflu05@users.noreply.github.com>
Date: Thu Mar 14 13:03:30 2024 +0100
handle report previewing errors (#6709)
commit 267ff67f05
Author: Oliver <oliver.henry.walters@gmail.com>
Date: Thu Mar 14 15:11:27 2024 +1100
[PUI] Updates (#6707)
* Add button to edit part category
* Fix useMemo()
* Edit stock location
commit 610ea7b0b1
Author: Oliver <oliver.henry.walters@gmail.com>
Date: Thu Mar 14 12:09:14 2024 +1100
Report: Add date rendering (#6706)
* Validate timezone in settings.py
* Add helper functions for timezone information
- Extract server timezone
- Convert provided time to specified timezone
* Add more unit tests
* Remove debug print
* Test fix
* Add report helper tags
- format_date
- format_datetime
- Update report templates
- Unit tests
* Add setting to control report errors
- Only log errors to DB if setting is enabled
* Update example report
* Fixes for to_local_time
* Update type hinting
* Fix unit test typo
commit 7de87383b5
Author: Oliver <oliver.henry.walters@gmail.com>
Date: Wed Mar 13 21:37:56 2024 +1100
Update .env (#6700)
Fix comment - no need to change Caddyfile in most cases
commit 2fef34852c
Author: Oliver <oliver.henry.walters@gmail.com>
Date: Wed Mar 13 20:37:05 2024 +1100
Unit tests for HOST settings (#6698)
- CORS
- ALLOWED_HOSTS
* Make ApiForms shrinkable, spoiler long group list
* Improve API Form Scroll Behavior
* Fix incorrect modal component
* Force load all modal fields to trigger loading animation
* Show loading overlay while fetching fields
* table updates
- Store page data in tablestate
- Store record count data in table state
* Expose "records" to table state
* edit or add parameters from ParametricPartTable
- Click on parameter cells to edit / add
* Mark fields as disabled
* Update table
- Display edit icon on hover
* Fix callback
* Fix stock.js
- Remove incorrect icon code
* Add TEST_STATION_DATA setting
- Controls whether test station fields are added
* Add setting to control test station fields
- Default to off to preserve old behaviour
* Adjust docker filter
- Run if settings.py changes
* Revert API version
* Adjust logic in settings.py
- Only exit if in main server thread
* Update qc_checks.yaml
* Add wildcard for CSRF_TRUSTED_ORIGINS in DEBUG mode
* Update wildcard
* Simplify settings.py logic
* Throw error on invalid site access policy
- If ALLOWED_HOSTS is empty, exit
- If CSRF_TRUSTED_ORIGINS is empty, exit
- Closes https://github.com/inventree/InvenTree/issues/6730
* Set parameters for devcontainer
* Update documentation
* Ignore server exit in testing mode
* Add INVENTREE_SITE_URL to CI
* Further CI updates
* Update settings.py
* Unit test updates
* More unit test updates
* Bump API version
* Re-introduce checks in settings.py
- Allow more lenient behaviour in TESTING mode
* Add new fields for the test results:
- Test start timestamp
- Test finish timestamp
- Test station name
* Add is_retest field to the stock_stockitemtestresult items
* Remove unnecessary print from migration
* Fix test result start/finished date rendering on UI
* Remove is_retest field
* Rerun pre-commit run --all-files to fix formatting
* Fix migrations
* Bump API version
* Fix API version again
* Do not enforce INVENTREE_LOG_LEVEL in dockerfile
- Already defaults to WARNING anyway
- Prevents override in config file
* Enable plugin loading in worker thread
* Add new setting STOCK_ENFORCE_BOM_INSTALLATION
- Defaults to True (legacy)
* Add logic to bypass BOM check
* Update CUI to reflect new logic
* Render InstalledItemsTable in PUI
* Add "details" view to SupplierPart page
* Fix PartActions
* Add placeholder for actions
* Add "title" option to DetailsTable
* Add edit form to supplier part page
* Fix link to manufacturer part
* Add "details" view to ManufacturerPartDetail page
* Add edit for ManufacturerPart
* Create new manufacturer part from company table
* Tweak ActionIcon
* Fix "BuildLine" label in PUI
- Point to "buildline" not "build"
* Prevent escape closing template ediror
* Update report docs
* Fix for format_number
- Prevent number from being represented as scientific notation
* Add default parts to location page
* Fix name strings
* Add Stock Transfer modal
* Add ApiForm Table field
* temp
* Add stock transfer form to part, stock item and location
* All stock operations for Item, Part, and Location added (except order new)
* Add default_location category traversal, and initial PO Line Item Receive form
* .
* Remove debug values
* Added PO line receive form
* Add functionality to PO receive extra fields
* .
* Forgot to bump API version
* Add Category Default to details panel
* Fix stockItem query count
* Fix reviewed issues
* .
* .
* .
* Prevent root category from checking parent for default location
* Validate timezone in settings.py
* Add helper functions for timezone information
- Extract server timezone
- Convert provided time to specified timezone
* Add more unit tests
* Remove debug print
* Test fix
* Add report helper tags
- format_date
- format_datetime
- Update report templates
- Unit tests
* Add setting to control report errors
- Only log errors to DB if setting is enabled
* Update example report
* Fixes for to_local_time
* Update type hinting
* Fix unit test typo
* Fix for generateTestKey
- Check for zero-length key
* Ensure test template name would generate valid key
* Add unit test
* Improve generateTestKey method
- Allow for non-latin chars
* Update generateTestKey
- Improve check for valid char
* updated translation base
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Improve cache loading for setting
- Handle generic exception
- Do not cache if importing data
* More generic exception handling
* Handle more cache exceptions
* Update config_template.yaml file
* Adjust ALLOWED_HOSTS behaviour
- Only add wildcard * in DEBUG mode
- Exit if ALLOWED_HOSTS not defined
* Tweak error message
* Use whitenoise for serving static files
- Any requests to /static/ are handled by whitenoise
- If an external reverse proxy (e.g. Caddy) is being used, this will not make a difference
* Update python package requirements
* Add extra log output
* Update ENV for CI checks
* Updates
- Thow error but do not exit
- Revert CI changes
* In debug mode, allow CORS from localhost origins
- Should allow more reliable connection from the vite frontend dev server
* Allow regex pattern to be specified externally
* Update docs
* updated translation base
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Update ru translations
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Added first POC for label editor
* Added preview item selection
* Split code
* Fix import
* Use liquid lang and added custom tooltips
* Auto load first item for preview and add BOM part assembly filter
* Make the save&reload action more obvious
* Make save optional and use server stored template
* Fix icons and inherit model url
* Add label/report extra fields to serializer and default templates
* Bump api version to v176
* Remove generic and pass template to editor
* Added error overlay
* Moved default tempaltes in default folder
* Only show detail drawer back button if necessary
* Rename action dropdown disabled to hidden and add loading disabled to template editor
* Fix types
* Add icons to editor/preview tabs
* Add draggable split pane and make editors use full height
* Add SplitButton component
* add code editor tag description
* fix related model field if empty string
* remove debug console.log
* move code editor/pdf preview into their own folder
* Update api_version.py
* add support for multiple editors
* fix template editor error handleing while loading/saving code
* add documentation for the template editor
* Install grpcio faster
- Pin version
- Update build packages
* Test dockerfile before push
- SImply test if invoke is present
* Revert commit to docker-compose
* Remove VIRTUAL_ENV from Dockerfile
* Fix pip install
* Run extra checks on docker image
* Ensure mariadb links are installed:
- Closes https://github.com/inventree/InvenTree/issues/6625
* Adjust CI
build docker image manually
* Should fail
- Test that revert fails CI
* Ok, this should break it
* Fix Dockerfile
* Fix for build line table
- Prefill source location correctly
* Refactor API filtering for BomList
- Make use of RestFilter class
* Add "external stock" field to BomItem serializer
* Simplify custom filtering
* Add "structural" column to part table
* Update BOM tables:
- Display indication of "external stock"
* Annotate "external_stock" to part serializer
- Update PartTable [PUI]
* Annotate BuildLine serializer too
* BuildLine endpoint - filter available stock based on source build order
- If build order is specified, and has a source location, use that to filter available stock!
* Add message above build line table
* Update BuildLineTable
* Bump API version
* Changes for PartThumbTable:
- Limit use of custom styling
- Better display of images
* Fix background color
* Use <StylishText> for titles
* Cleanup details grid
- Use Mantine components
- Simplify structure
* Fix TableThumbProps
* updated translation base
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix ru newlines
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* [BUG] Inventree fiddles with files directly rather than using Django Storage api
Fixes#2585
* PEP fix
* clean diff
* move template discovery into central location
* more moving file operations
* fix paths
* and another path fixing
* more fixes
* fix typing
* switch config back to local
* revert locale stats
* add s3 support
* storages
* more adaptions
* use s3 switch to set storage backend
* fix reqs
* cleanup default_storage
* init in storage_backend
* move to storage classes everywhere
* fix call
* remove more S3 references
* move storage init
* fix startup error
* alsways use url
* ignore FileExistsError
* move s3 required url in
* remove S3 for now
* use Djangos defaults
* fix old import
* remove default_storage calls
* make labels/reports more similar
* expand functions out
* refactor to use refs where possible
* refactor copy section to be similar
* unify db lookup
* move shared code to generic section
* move ready out
* docstrings
* move even more functions out
* move references inline of the classes
* clean up refs
* fix init
* fix ensure dir
* remove unneeded tries
* cleanup diff
* more cleanup
* fix tests
* use SUBDIR
* remove docker-sqlite file
- Do not want to encourage use of sqlite
* Add Caddyfile
* Add default site URL to .env
- Matches Caddyfile
* Cleanup / simplify .env file
* Remove dev nginx conf file
* Further cleanup of .env file
* Update docker-compose.yml
- Use caddy image instead of nginx as proxy
* Set max body size
* gunicorn: enable external logging
* Update file structure
* Cleanup docker-compose file
* Update docker/docker-compose.yml
Co-authored-by: Matthias Mair <code@mjmair.com>
* Update docker/Caddyfile
Co-authored-by: Matthias Mair <code@mjmair.com>
* Fix for postgresql packages
- Need postgresql13-client to be installed, it contains pg_dump
- Without this, backup / restore *does not work*
* Create static_i18n dir if it does not exist
* Reduce output from collectstatic
* Revert gunicorn logging
- Want to see the logs in docker
* Fix trailing slash
Ref: https://github.com/inventree/InvenTree/pull/6551#issuecomment-1962423765
* tasks.py - pass 'nouv' option through
* Update package requirements:
- Allow installation of rapidfuzz without building
* Install uv as part of docker image
* Add environment variable to control downstream URL
* Do not use uv package manager by default
- Currently does not work "correctly" - ignores installed packages
- Requires further work to run reliably
* Fix docker-compose file
- Do not build locally
* Cleanup gunicorn file
- Remove unused lien
* Cleanup docker-compose.yml
- Simpler volume management
* Update Caddyfile
Add newline
* Update requirements.txt
Add newline
* Update tasks.py
Add missing blank line
* Simplify Caddyfile
* Adds option for customizing web port
* cleanup docker-compose.yml
- Better mapping of caddy data
- Cleaner volume setup
* Add django version template
- Ensure all docs links point to the current django version we are using
* docs: cleanup intro.md
* Cleanup serving_files.md
* Cleanup config.md
* docker install docs updates
* Enable code block copying
* Fix include file
* Fix link
* Update docker install docs
* Update docker.md
* Add info about demo dataset
* Tweak heading
* Update docs link checks
* Fix workflow
* Another fix
* More ignore pattearns
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* updated translation base
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Update unit conversion
- Set autoconvert_offset_to_baseunit attribute
- Add aliases for common temperature units
- Raise error if invalid target unit is provided
* Updated unit tests
- Checks for temperature conversion
- Checks for invalid units
* PartCategoryTree - add "subcategories" field
* Fix rendering of PartCategoryTree
* Implement similar fixes for StockLocationTree
* Bump API version
* Breadcrumb list tweak
- Limit to 7 items
* Fix bug for stock tree serializer
* Add unit tests
* push to ghcr (#168)
* Update docker.yaml
* Update docker.yaml
* Update docker.yaml
* use matrix to build for the plattforms (faster amd pub)
* try Buildjet
* switch to pyhton 3.9
* Update docker.yaml
* path python manually?
* bump python to 3.11
* Update Dockerfile
* step down vm
* cleanup workflow
* install docker on mac
* and docker compose too
* switch back to linux
* Docker tests (#175)
* push to ghcr (#168)
* Update docker.yaml
* Update docker.yaml
* Update docker.yaml
* use matrix to build for the plattforms (faster amd pub)
* try Buildjet
* switch to pyhton 3.9
* Update docker.yaml
* path python manually?
* bump python to 3.11
* Update Dockerfile
* step down vm
* cleanup workflow
* install docker on mac
* and docker compose too
* switch back to linux
* switch to uv
* fix uv install
* reintroduce checks
* cleanup diff
* [FR] Add config option to fully disable installing plugins
Fixes#6531
* also restrict uninstalling
* Added test
* diff cleanup
* extend api to show if install was disabled
* PUI disable install buttons
* CUI disable install button if not available
* add config option
* Rephrase
* use default setup action
* small change to trigger CI
* use enviroment step
* define python version
* us uv a bit more
* clean diff
* globally define python version
* move CUI JS files to CUI url section
* add flag to seperate CUI code and tests
* re-enable tests
* move urls back to backend patterns
* swap switch logic
* fix merge
* returning PUI paths if CUI not enabled
* revert test changes
* fix plugin settings url
* URL is not dependant on UI generation
* small fixes
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
---------
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
* test UV performance
* second dummy change
* fix CI
* set version - uv is already proving to be great
* dummy bump
* bump to newer uv
* use uv in more places
* revert uv
* add flag to disable UV
* fix vevn for CI
* bump uv version
* bump to uv-016
* bump
* bump
* switch to uv
* Update PartParameterTemplate API
- Expose number of "parts" using a particular template
- Improve filtering visibility
- Update PUI table
* Update API version
* PartCategoryList: Add FilterSet class
* Update PartCategory filters
- Migrate all custom filtering to the FilterSet
* Logic updates
* Revert deleted code
* Implement similar filters for StockLocation list API
* Update API docs
* Unit test updates
* More fix
* Fix for StockLocation filterclass
* Fix PUI tables
* Cleanup CUI tables
* Updated unit tests
* Added various PO fixes
* Add auto-pricing and merge items functionality to PurchaseOrderLineItem
* Bump api version to v173
* Add po line item create/update tests
* Add new field to PartTestTemplate model
- 'enabled' field
- default = True (backwards compatibility)
- Allows tests to be disabled
- Retains test results but disables test
* Update PartTestTemplate API
- Expose new field
- Enable filtering by field
* CUI updates
- Add to PartTestTemplate table
* PUI: Update PartTestTemplateTable
* Update getRequiredTests
- By default, filter out tests which are "disabled"
* Update StockItemTestResult table
- Only display "enabled" tests
- Update CUI
- UPdate PUI
* Update existing build output table
* Bump API version
* Docs updates
* Updated unit tests
* Fix ordering of "stock" column in StockItemTable
* Handle table.activeFilters
- Can be passed undefined value in some cases
* Fix legacy test result table
- Add in "pass test" button
* Improve logic for creating templates
- Only look at ancestor parts *above* the existing part
* Update migration
- Only look above!
* Improve matching in template
* New data migration
- Fixes (probably rare) edge case in previous data migration
* Table tweak
- Embolden required test templates
* Add assertion check to data migration
* Update API version
- Add filter for "has_results" on the PartTestTemplate API endpoint
* Logic fix
* Add basic table for stock item test results
* Improve custom data formatter callback
* Custom data formatter for returned results
* Update YesNoButton functionality
- Add PassFailButton with custom text
* Enhancements for stock item test result table
- Render all data
* Add placeholder row actions
* Fix table link
* Add option to filter parttesttemplate table by "inherited"
* Navigate through to parent part
* Update PartTestTemplate model
- Save 'key' value to database
- Update whenever model is saved
- Custom data migration
* Custom migration step in tasks.py
- Add custom management command
- Wraps migration step in maintenance mode
* Improve uniqueness validation for PartTestTemplate
* Add 'template' field to StockItemTestResult
- Links to a PartTestTemplate instance
- Add migrations to link existing PartTestTemplates
* Add "results" count to PartTestTemplate API
- Include in rendered tables
* Add 'results' column to test result table
- Allow filtering too
* Update serializer for StockItemTestResult
- Include template information
- Update CUI and PUI tables
* Control template_detail field with query params
* Update ref in api_version.py
* Update data migration
- Ensure new template is created for top level assembly
* Fix admin integration
* Update StockItemTestResult table
- Remove 'test' field
- Make 'template' field non-nullable
- Previous data migrations should have accounted for this
* Implement "legacy" API support
- Create test result by providing test name
- Lookup existing template
* PUI: Cleanup table
* Update tasks.py
- Exclude temporary settings when exporting data
* Fix unique validation check
* Remove duplicate code
* CUI: Fix data rendering
* More refactoring of PUI table
* More fixes for PUI table
* Get row expansion working (kinda)
* Improve rendering of subtable
* More PUI updates:
- Edit existing results
- Add new results
* allow delete of test result
* Fix typo
* Updates for admin integration
* Unit tests for stock migrations
* Added migration test for PartTestTemplate
* Fix for AttachmentTable
- Rebuild actions when permissions are recalculated
* Update test fixtures
* Add ModelType information
* Fix TableState
* Fix dataFormatter type def
* Improve table rendering
* Correctly filter "edit" and "delete" buttons
* Loosen requirements for dataFormatter
* Fixtures for report tests
* Better API filtering for StocokItemTestResult list
- Add Filter class
- Add option for filtering against legacy "name" data
* Cleanup API filter
* Fix unit tests
* Further unit test fixes
* Include test results for installed stock items
* Improve rendering of test result table
* Fix filtering for getTestResults
* More unit test fixes
* Fix more unit tests
* FIx part unit test
* More fixes
* More unit test fixes
* Rebuild stock item trees when merging
* Helper function for adding a test result to a stock item
* Set init fix
* Code cleanup
* Cleanup unused variables
* Add docs and more unit tests
* Update build unit test
* Add option to disable the build output completion if required tests not passed
Fixes#5037
* Fix review comments
* Added tests
* Add settinsg option to PUI
* Utilize F" string concatenation
* Add validation to serializer too to being able to generate proper error message in the case if multiple outputs having incomplete tests
* Fix other build tests failing because of the new stock items
* Remove len from array empty check
* Update serializers.py
* Update models.py
Simplify error message
* Update settings.py
Formatting fix
* Update models.py
More style fixes
* Update models.py
Remove empty line
---------
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
* Allow simpler setting for CSRF_TRUSTED_ORIGINS and CORS_ALLOWED_ORIGINS
- If these are not specified by the user, but a SITE_URL *is* specified, then use that
* Update docs
* Update config.md
Remove outdated notes
* Handle case where OPTIONS.actions is not present
* Specify stock.change permission
* Hide table button based on user permission
* Fix for permission check class
* updated translation base
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Clean translation
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Handle error on logout
- Logout failure redirects to login page
* Handle case if user is undefined when fetching role data
* Cleanup error messages
* More error message cleanup
* Added initial draft for machines
* refactor: isPluginRegistryLoaded check into own ready function
* Added suggestions from codereview
* Refactor: base_drivers -> machine_types
* Use new BaseInvenTreeSetting unique interface
* Fix Django not ready error
* Added get_machines function to driver
- get_machines function on driver
- get_machine function on driver
- initialized attribute on machine
* Added error handeling for driver and machine type
* Extended get_machines functionality
* Export everything from plugin module
* Fix spelling mistakes
* Better states handeling, BaseMachineType is now used instead of Machine Model
* Use uuid as pk
* WIP: machine termination hook
* Remove termination hook as this does not work with gunicorn
* Remove machine from registry after delete
* Added ClassProviderMixin
* Check for slug dupplication
* Added config_type to MachineSettings to define machine/driver settings
* Refactor helper mixins into own file in InvenTree app
* Fixed typing and added required_attributes for BaseDriver
* fix: generic status import
* Added first draft for machine states
* Added convention for status codes
* Added update_machine hook
* Removed unnecessary _key suffix from machine config model
* Initil draft for machine API
* Refactored BaseInvenTreeSetting all_items and allValues method
* Added required to InvenTreeBaseSetting and check_settings method
* check if all required machine settings are defined and refactor: use getattr
* Fix: comment
* Fix initialize error and python 3.9 compability
* Make machine states available through the global states api
* Added basic PUI machine admin implementation that is still in dev
* Added basic machine setting UI to PUI
* Added machine detail view to PUI admin center
* Fix merge issues
* Fix style issues
* Added machine type,machine driver,error stack tables
* Fix style in machine/serializers.py
* Added pui link from machine to machine type/driver drawer
* Removed only partially working django admin in favor of the PUI admin center implementation
* Added required field to settings item
* Added machine restart function
* Added restart requird badge to machine table/drawer
* Added driver init function
* handle error functions for machines and registry
* Added driver errors
* Added machine table to driver drawer
* Added back button to detail drawer component
* Fix auto formatable pre-commit
* fix: style
* Fix deepsource
* Removed slug field from table, added more links between drawers, remove detail drawer blur
* Added initial docs
* Removed description from driver/machine type select and fixed disabled driver select if no machine type is selected
* Added basic label printing implementation
* Remove translated column names because they are now retrieved from the api
* Added printer location setting
* Save last 10 used printer machine per user and sort them in the printing dialog
* Added BasePrintingOptionsSerializer for common options
* Fix not printing_options are not properly casted to its internal value
* Fix type
* Improved machine docs
* Fix docs
* Added UNKNOWN status code to label printer status
* Skip machine loading when running migrations
* Fix testing?
* Fix: tests?
* Fix: tests?
* Disable docs check precommit
* Disable docs check precommit
* First draft for tests
* fix test
* Add type ignore
* Added API tests
* Test ci?
* Add more tests
* Added more tests
* Bump api version
* Changed driver/base driver naming schema
* Added more tests
* Fix tests
* Added setting choice with kwargs and get_machines with initialized=None
* Refetch table after deleting machine
* Fix test
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* Add BOM creation to ther sofa example
* Fixed typo
* Update examples.md
Cleanup wording a bit
---------
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
* Add basic task for generating apidocs
* Fix SPECTACTULAR_SETTINGS
- Some provided options were not correct
* Update .gitignore
* Fix for duplicated API path
- `/api/plugins/activate` routed to PluginActivate view
- Must be associated with a specific plugin ID
* By default, fail if warnings are raised
* Use GenericAPIView for GetAuthToken
* Use GenericAPIView for RolesDetail endpoint
* Refactor more endpoints to use GenericApiView
* More API cleanup
* Add extra type hints for exposed methods
* Update RoleDetails endpoint
- Specify serializer
- Use RetrieveAPI class type
* More type hints
* Export API docs as part of CI
* add more api views docs
* even more docs
* extend tests to api-version
* simplify serializer
* and more docs
* fix serializer
* added more API docs
* clean diff
* Added APISearch base
* do not assume you know the user
he might be anonymously creating the schema ;-)
* set empty serializer where no input is needed
* Use dummy model for schema generation
* fix OpenAPI docs section
* only run if needed
* remove schema task
* Add version check
* pin version
* fix QC order
* fix assign
* refactor order
* optimize compile times
* fix assign
* onyl use install
* more fixing
* use full update cycle
* revert python change
* use api_version
* run py
* why?
* clean up output
* only check for api version diff if api_version was not touched
* add schema check again
* use seperate filter for API
* increment api_version
* Added push step
* seperate publishing step to lower complexity
* fix naming
* fix file ending
* Update qc_checks.yaml
---------
Co-authored-by: Oliver Walters <oliver.henry.walters@gmail.com>
* updated translation base
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* ru: Remove newline chars
* Simplify translation
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Adjust maintenance mode backend
- Save a timestamp to the setting, after which maintenance mode is not active
- Fallback to account for possibility that race condition / exception leaves maintenance mode active
* Update docstring
* Remove unused import
* Add unit tests for maintenance mode
* Add basic task for generating apidocs
* Fix SPECTACTULAR_SETTINGS
- Some provided options were not correct
* Update .gitignore
* Fix for duplicated API path
- `/api/plugins/activate` routed to PluginActivate view
- Must be associated with a specific plugin ID
* By default, fail if warnings are raised
* Use GenericAPIView for GetAuthToken
* Use GenericAPIView for RolesDetail endpoint
* Refactor more endpoints to use GenericApiView
* More API cleanup
* Add extra type hints for exposed methods
* Update RoleDetails endpoint
- Specify serializer
- Use RetrieveAPI class type
* More type hints
* Export API docs as part of CI
* add more api views docs
* even more docs
* extend tests to api-version
* simplify serializer
* and more docs
* fix serializer
* added more API docs
* clean diff
* Added APISearch base
* do not assume you know the user
he might be anonymously creating the schema ;-)
* set empty serializer where no input is needed
* Use dummy model for schema generation
* fix OpenAPI docs section
* Update .github/workflows/qc_checks.yaml
Co-authored-by: Matthias Mair <code@mjmair.com>
* REmove duplicate commands
* Ignore warnings in CI
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* Fix for dockerfile
- Ensure that core DB packages are kept around
- We can purge the dev packages after building python modules
* Revert "Fix for dockerfile"
This reverts commit 8522ff243e.
* Update requirements.txt
- Remove psycopg-c
- Not supported unless postgresql-libs are installed as a system package
- Prints a warning message in logs
- Works without it
* updated translation base
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix newlines
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Add method to extract "install name" from a plugin
* Include more information in plugin meta serializer
* Implement better API filtering for PluginConfig list
* Add an "update" button to the plugin table row actions
- Only for "package" plugins
* Adds method to update a plugin:
- Add plugin.installer.update_plugin method
- Add error logging to existing methods
- Add API endpoint and serializer
- Integrate into PUI table
* Implement lazy loading for plugin tables
* Extract package information on registry load
- Info is already available via entrypoint data
- Significantly faster as introspection operation is expensive
- Less code is good code
* Frontend updates
* Add accordion to plugin page
* Add setting to control periodic version check updates
* Update API version info
* Add "package_name" field to PluginConfig
- When the plugin is loaded, save this name to the PluginConfig model
- Update the admin view
* Update API serializer
* Refactor plugin installer code
- Add common functions
* Adds API endpoint for uninstalling an installed plugin
* Allow uninstall of plugin via API
- Add API endpoints
- Add UI elements
* Tweak for admin list display
* Update plugin
* Refactor "update" method
- Just use the "install" function
- Add optional "version" specifier
- UI updates
* Allow deletion of PluginConfig when uninstalling plugin
* Add placeholder for deleting database tables
* Revert code change
- get_object() is required
* Use registry.get_plugin()
- Instead of registry.plugins.get()
- get_plugin checks registry hash
- performs registry reload if necessary
* Add PluginValidationMixin class
- Allows the entire model to be validated via plugins
- Called on model.full_clean()
- Called on model.save()
* Update Validation sample plugin
* Fix for InvenTreeTree models
* Refactor build.models
- Expose models to plugin validation
* Update stock.models
* Update more models
- common.models
- company.models
* Update more models
- label.models
- order.models
- part.models
* More model updates
* Update docs
* Fix for potential plugin edge case
- plugin slug is globally unique
- do not use get_or_create with two lookup fields
- will throw an IntegrityError if you change the name of a plugin
* Inherit DiffMixin into PluginValidationMixin
- Allows us to pass model diffs through to validation
- Plugins can validate based on what has *changed*
* Update documentation
* Add get_plugin_config helper function
* Bug fix
* Bug fix
* Update plugin hash when calling set_plugin_state
* Working on unit testing
* More unit testing
* Fix typo (installing -> uninstalling)
* Reduce default timeout
* set default timeout as part of ApiDefaults
* revert changes to launch.json
* Remove delete_tables field
- Will come back in a future PR
* Fix display of nonFIeldErrors in ApiForm.tsx
* Allow deletion of deleted plugins
- PluginConfig which no longer matches a valid (installed) plugin
* Cleanup
* Move get_plugin_config into registry.py
* Move extract_int into InvenTree.helpers
* Fix log formatting
* Update model definitions
- Ensure there are no changes to the migrations
* Update PluginErrorTable.tsx
Remove unused var
* Update PluginManagementPanel.tsx
remove unused var
* Comment out format line
* Comment out format line
* Fix access to get_plugin_config
* Fix tests for SimpleActionPlugin
* More unit test fixes
* Update plugin/installer.py
- Account for version string
- Remove on uninstall
* Fix
* Use registry.get_plugin()
- Instead of registry.plugins.get()
- get_plugin checks registry hash
- performs registry reload if necessary
* Add PluginValidationMixin class
- Allows the entire model to be validated via plugins
- Called on model.full_clean()
- Called on model.save()
* Update Validation sample plugin
* Fix for InvenTreeTree models
* Refactor build.models
- Expose models to plugin validation
* Update stock.models
* Update more models
- common.models
- company.models
* Update more models
- label.models
- order.models
- part.models
* More model updates
* Update docs
* Fix for potential plugin edge case
- plugin slug is globally unique
- do not use get_or_create with two lookup fields
- will throw an IntegrityError if you change the name of a plugin
* Inherit DiffMixin into PluginValidationMixin
- Allows us to pass model diffs through to validation
- Plugins can validate based on what has *changed*
* Update documentation
* Add get_plugin_config helper function
* Bug fix
* Bug fix
* Update plugin hash when calling set_plugin_state
* Working on unit testing
* More unit testing
* Move get_plugin_config into registry.py
* Move extract_int into InvenTree.helpers
* Fix log formatting
* Update model definitions
- Ensure there are no changes to the migrations
* Comment out format line
* Fix access to get_plugin_config
* Fix tests for SimpleActionPlugin
* More unit test fixes
* bump to dj >4.2
* switch to experimental git release
* bump django-import_export
* bump mptt
* replace is_ajax, which was removed
https://docs.djangoproject.com/en/3.1/releases/3.1/#id2
* Save before accessing values in m2m/fk fields
* move plugin init
* use dev version of django for fix
* update deps
* fix deps
* use django smaller 4.2
* fix reqs
* fix merge
* remove moved code
* another merge fix
* fix ajax call
* fix refs
* change python min v
* fix deps
* bump deps
* fix deps
* pin pillow
* dj 4.1 upgrades
* make diff smaller
* bump all deps
* drop down to py3.9
* bump versions
* merge fix
* fix diff
* more bumping
* diff cleanup
* bump deps
* fix reqs
* use accurate state for model migrations
using apps the historically correct state is used
* try import
* added more logs
* add try here too
* clean up rebuilds
* Dj 4.2 (#161)
* autochanges
* bump
* fix diff
* fix diff
* bump deps
* fix req
* remove select_related to test error influence
* switch to mptt fork
* fix reqs for upstream
* move tracking ensureance into save
* optimize check frequency
* use psycopg instead of psycopg2
* fix header
* just use the values
* switch to dj < 4.2
* fix req
* another req fix
* switch to 4.2 again
* fix merge error
* Check for null pk in calculate_total_price
Cannot access self.lines if pk is Null
* use patched mptt
* try psycopg2 again
* Remove tree rebuild from migrations
* Prevent notify_users if importing or migrating
* Add order_by() to subquery annotations
- Ref: https://stackoverflow.com/a/629691
* Update stock filters
- Append order_by()
* fix error if running without timezones in testing
* add logging to figure this out
* remove tz from self.creation if TZ is off
* add tz?
* move around?
* only run the test i am trying to figure out
not reproducible on my machine
* only run the test i am trying to figure out
not reproducible on my machine
* run all tests again
---------
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
* Add getModelInfo helper function
- Extract model definition from provided modeltype
* Improvements for details.tsx
- Use defined URL functions, not strings
- Catch potential errors
* Fix PartDetail page
- Use modeltype definitions
- URL fixes
* updated translation base
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix ru/django.po
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Add creation_date to the serializers of the Orders (to make it changeable by API)
Fixes#6159
* Add API tests for the creation_date field
* Fix missing , in test_api.py
* Allow null to be passed (transleted to current date later) for creation_date of the Orders in the serializers too
* Fix docs for INVENTREE_SITE_URL
* Adjust default SITE_ID
* Optional support for multi-site
- Disable by default
* Prevent site setting from being changed if set by config parameter
* Update site url setting on server launch
* Update log messages
* Update RULESET_MODELS
* Update unit tests
* More fixes for unit tests
* Update docs
* Update SSO image
* Fix API endpoint URLs
* Adds "authenticated" field to root API endpoint
* Load global status data separately
- Create new global state manager
- Load *after* login
- Prevents auth popup dialog and failure messages
* Add launch config for frontend dev
* Update docs
* Clear token auth if no token is defined
* remove unneeded import
* Revert format of InfoView endpoint
* Remove "authenticated" from InfoView
* Refactor is_staff token check
- Using new get_token_from_request method
* Cleanup code
- return early
* URL fixes
- More fixes for incorrect api calls
* Better tracking of authenticated status
- track an internal flag in apiState
* Prioritize token auth
* Only fetch userState if authenticated
* Force unauthenticated state on first launch
* Updates to login procedure
- Rename doClassicLogin to doBasicLogin (reflecting "basic" auth)
- Add "loggedIn" attribute to sessionState
- Cleanup procedure for securing a token
* Abort early on checkLoginState
- Prevent failed calls to user_me
* Refactoring
- Simpler to just track token state
- No need for separate status tracker
- Works much cleaner this way
* Remove debug messages
* Cleanup unused imports
* Fix unused variable
* Revert timeout to 2000ms
* Rename doClassicLogout -> doLogout
* Improvements for checkLoginState
- Account for the presence of a CSRF session cookie
- If available, use it to fetch a token
* Clear CSRF cookie on logout
- Forces logout from session
- Tested, works well!
- Clean up notifications
* Cleanup setApiDefaults method
* fix global logout (PUI -> CUI)
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* Request column names from server when loading table
- As these are translated by the server, we can make use of them on the client side!
- Reduces duplication of translated titles
* Move tables up one level
* Cache translated table column names
* Clear table column cache whenever we change locale context
* Fix cache behavioue
* Enforce titleCase for table column names
* Refactor BuildOrder table
* Refactor Company table
* Refactor order tables
* More refactoring
- Refactoring more columns
* Update more tables
* Refactor BomTable
* Remove toTitleCase
- We will rely on the server-side translations!
* Remove debug messages
* Update src/frontend/src/tables/InvenTreeTable.tsx
Co-authored-by: Matthias Mair <code@mjmair.com>
* Cleanup
* Update docstring
* Cleanup
* Support nested fields with dot notation
- Powerful code reuse is powerful
* Complete refactor for BuildLine table
- Add some missing field descriptors on the backend
* Cleanup hooks a bit
* Update BomTable
* Allow table filters to make use of the same info
* Add ReferenceColumn helper
* Use queryParams when fetching table OPTIONS
- Required to ensure the same columns are fetched
* More refactoring
* Fix ProjectCodeTable
* Code cleanup
* Fix unused var
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* Use PATCH for edit form
* Add "localhost:8000" server option
* Add initialData property for forms
- Allows user to specify an initial dataset to override default values
* Override field values when constructing form props
* Remove debug messages
* Wrap ApiForm in FormProvider
- Allows lower elements to access all form data without rebuild
- Pass all form data through to adjustFilters routine
* Fixes for RelatedModelField
- Ensure that the saved data are cleared when filters change
* Fix debug message for token creation
* Fix address rendering for modals
* Refactor "address" forms
- Use new "hook" form structure
* Update Contacts table
* Prevent related model fields from fetching on initial form open
- Only fetch when the drop-down is actually opened
- Significantly reduces the number of API calls
* Fix for ChoiceField
- Display label / description / placeholder text
* Fix for DateInput
- Correct conversion of datatype
* Implement "new purchase order" form
- Uses modal form hook
- Supply initial data
- Adjust filters according to selected company
* Add new company from company table
* Edit company from detail page
* More table updates
- StockLocation
- PartCategory
* Update more tables / forms:
- PartParameter table
- PartParameterTemplate table
- Cleanup unused imports
* Update ProjectCode table
* CustomUnits table
* Update RelatedPart table
* Update PartTestTemplate table
* Cleanup PartParameterTable
* Add "IPN" column to PartParameterTable
* Update BuildOrder table
* Update BuildDetail page
* PurchaseOrderLineItem table
* Simplify
- Move fields which are only used in one location
* Create new salesorder with context
- Also consolidate translated strings
- Also improve consistency of inline rendering (with missing image)
* Revert change to RenderInlineModel
* Fix for build table
- Use apiUrl wrapper around ApiEndpoint
* Fix parameter for PurchaseOrderTable
* Adjust server selector
- Only show localhost:8000 if in dev mode
* Tweak URL
* Add extra test to playground
- Check initial value works for nested field
* Cleanup playground
* Cleanup unused vars
* memoize fields
* Fix typo
host -> host
* Fix part editing
* Cleanup unused
* update group table
* Prevent tracing in worker thread
* Tweak logic
* Further improvements
* Adds invoke command to launch gunicorn server
* Update docstring
* Add explicit check for migrations or data import
* Update tracing.py
Allow tracing in worker thread
* Auto-fill project code
When creating a new child build order, copy project code from parent build
* Auto-fill project code for sales orders
* Annotate "building" quantity to BuildLine serializer
- So we know how many units are in production
* Display building quantity in build line table
* Update API version info
* Skeleton for BuildLineTable
- No content yet (needs work)
* Refactor part hovercard
* Navigate to part
* Add actions for build line table
* Display more information for "available stock" column
* More updates
* Fix "building" filter
- Rename to "in_production"
* Add filters
* Remove unused imports
* updated translation base
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix faulty translation
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Add child stock item table
* Fix stock item splitting bug
- StockItem tree was not being rebuilt correctly
- Add unit tests
* Annotate StockItem serializer with "child_items" count
* Show or hide "child items" panel
* Account for case where tree_id is zero
* Add placeholder page for SupplierPartDetail
- All empty at this stage
* Adds ManufacturerPartDetail page
* Further updates to supplierpart and manufacturerpart support
* Cleanup unused vars
* More cleanup
* updated translation base
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Specify empty OIDC prefix
Ref: https://github.com/inventree/InvenTree/discussions/6273
* Add extra comment around version information
* Update InvenTree/InvenTree/settings.py
Co-authored-by: Philipp Fruck <dev@p-fruck.de>
---------
Co-authored-by: Philipp Fruck <dev@p-fruck.de>
* optimize login layout
* move auth/reg up
* [PUI] Registration
Fixes#6282
* [PUI] Registration
Fixes#6282
* fix type
* Add auth settings to API state
* control showing of registration via state
* small cleanups
* Added registration and password forgotten to auth endpoint
* control password forgotten via state
* cleanup imports
* bump api version
* Ensure .ts files are generated
- "yarn run compile" before "yarn run dev"
- ensures that .ts locale files are all generated
* Implement "Add Part Category" button
* Create new stock location
* Rename customActionGroups to tableActions
* Rename customFilters to tableFilters
* Edit category from table
* Edit stock location from table
* Add some placeholder buttons
* More placeholders
* Refactor method to extract token from request
* Reimplement error-report API endpoint
- Removed in previous commit - b8b3dfc90e
- Adds unit tests to ensure it doesn't happen again
* Adds custom logout view for API
- Ensure correct token gets deleted
- Our new custom token setup is incompatible with default dj-rest-auth
* Revert {% jstrans %} for .js files
- file extension is enough
* Remove custom jstrans templatetag
* Replace jstrans calls for .html files
- Add "escape=True"
* Allow for custom "escape" argument
* Update custom trans tag
- Cannot pass kwargs in the same way
- Add the "escape" attribute
* Update js translations in html files
* Tweaks for OpenTelemetry tracing:
- Add logger info message if enabled
- Explicit kwargs to setup_tracing method
- Change is_http to True by default (as per internal docs)
* Allow operation without specifying tracing.headers
* Clean up log message
* Fix check for static dir
* Fix export price field for SalesOrderLineItem
* Automatically detect which non-nullable fields need conversion
* Fix bug during import
- fulfilled_quantity and allocated_quantity must have a pk
- Cannot work before imported!
* move more paths to basic path
* changed url route to only match fully - fixed test
* revert path changes on labelprint pages
* fix not found/redirect
* revert test change
* updated translation base
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Move locales definition into separate file
- Cleanup settings.py a bit
* Update docstring
* Expose 'default_locale' to info API endpoint
* Validate settings.LANGUAGE_CODE
* Fix bug in BuildDetail page
* Use selected language when making API queries
* Translate more strings
* Tweak variable name
* Update locale config
* Remove duplicate code
* Remove compiled messages.ts translation files
* Fixes for LanguageContext.tsx
* Update messages.d.ts for sr locale
* Ensure compiled files are served by django runserver
* Amend changes to STATICFILES_DIRS
* Cleanup prerender.py
* Refetch status codes when locale is changed
* Fix log msg
* Clear out old static files
* Add API endpoint for background task overview
* Cleanup other pending heartbeat tasks
* Adds API endpoint for queued tasks
* Adds API endpoint for scheduled tasks
* Add API endpoint for failed tasks
* Update API version info
* Add table for displaying pending tasks
* Add failed tasks table
* Use accordion
* Annotate extra data to scheduled tasks serializer
* Extend API functionality
* Update tasks.py
- Allow skipping of static file step in "invoke update"
- Allows for quicker updates in dev mode
* Display task result error for failed tasks
* Allow delete of failed tasks
* Remove old debug message
* Adds ability to delete pending tasks
* Update table columns
* Fix unused imports
* Prevent multiple heartbeat functions from being added to the queue at startup
* Add unit tests for API
* Add tests for report api
* Add test for delete endpoint
* Use pk in reverse call
* Allow kwargs in APITestCase methods
* Data is in response.data
* Fix comment
* Use expected_code argument instead of separate check
* Test with superuser
* Negative indexing not allowed, try with this alternative
* Looking for what went wrong..
* APITestCase does not work like Python requests - change POST calls
* Upload success is code 201
* In PATCH method, change test file and description as well
* Add test for get_api_url method
* Change format parameter for file upload
* Copy tests for report API over to label API
* Add test model for BuildLineLabel
* Update tests
* Make example template valid
* Add methods for testing label printing
* Update rebuild_thumbnails command
- Skip if images already exist
- Prevents significant clutter in the logs
- Speeds up the command too
* Refactoring
* Use '--natural-foreign' when exporting dataset
- Uses "natural keys" (model names) instead of ContentType ID
* Update task options
- Change 'include_plugins' to 'exclude_plugins'
- Change 'delete_temp' to 'retain_temp'
* Split data import into two-step process
- First, import auth models
- Second, import data
- Ensures auth.user and auth.group are in place before users.owner is loaded
* Adjust temp file name
* Touch apps.py
- Just so the proper CI checks run
* Updates to data import/export steps
- Allow import/export of users.owner model
- Allow export of API tokens (optional, default=False)
* Exclude plugin configuration data by default
* Add option to exclude socialaccount information from exported data
* updated translation base
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Adds API endpoint for fetching error information
* Bump API version
* Implement table for displaying server errors
* Add support for "bulk delete" in new table component
* Update API version with PR
* Fix unused variables
* Enable table sorting
* Display error details
* updated translation base
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Add tme barcode CPO field
* Fix LCSC order number field
* Fix mouser order number field
* Fix get_purchase_orders logic
* Refine get_purchase_orders logic
* Slightly refactor get_purchase_orders logic
* Remove support for django-debug-toolbar
- Will not be effective with new react interface
- Performance is too slow for use anyway
* Fix requirements-dev.txt
- Create Resource class which uses InvenTreeResource base
- Ensure 'units' field is converted to string if empty
- Handle null choices field in PartParameterTemplate model
* factored out user creation step
* [FR] Support creating reading initial superuser account password from file
Fixes#5471
* added docs
* use env too with password file
* do not warn if passwordfile is set
* updated translation base
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* updated translation base
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
* Fix: New translations django.po from Crowdin
* Fix: New translations messages.po from Crowdin
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* move UI rendering out of App.tsx
this makes bundles that just use API components (eg. to render out PUI settings controls for inclusion CUI) much easier
* fixes pre-commit warning
* Revert "fixes pre-commit warning"
This reverts commit 712f27bb1c.
* Patch for django-allauth 0.55.0
- Some breaking changes here
- Add logger error if auth provider cannot be imported
- Fix for API endpoints
* Only provide URLs for configured plugins
* Update for django-allauth 0.56.0
- Remove support for keycloak
- Remove example from configuration template
* Update django-allauth in requirements.txt
* Update requirements.in
* Refactor SSO functions into common file
* Update config template file
* Update docs
* Fix template files
* Log SSO exceptions to the database
- WIll help greatly with debugging installs
* Add note about error handling in docs
label:"Please verify that this bug has NOT been raised before."
description:"Search in the issues sections by clicking [HERE](https://github.com/inventree/inventree/issues?q=) and read the [Frequently Asked Questions](https://docs.inventree.org/en/latest/faq/)!"
description:"Search in the issues sections by clicking [HERE](https://github.com/inventree/inventree/issues?q=) and read the [Frequently Asked Questions](https://docs.inventree.org/en/latest/sref/faq)!"
options:
- label:"I checked and didn't find a similar issue"
required:true
@ -37,13 +37,15 @@ body:
label:"Expected behaviour"
description:"A clear and concise description of what you expected to happen."
placeholder:"..."
- type:checkboxes
- type:dropdown
id:deployment
attributes:
label:"Deployment Method"
options:
- label:"Docker"
- label:"Bare metal"
- Docker
- Package
- Bare metal
- Other - added info in Steps to Reproduce
- type:textarea
id:version-info
validations:
@ -52,13 +54,25 @@ body:
label:"Version Information"
description:"The version info block."
placeholder:"You can get this by going to the `About InvenTree` section in the upper right corner and clicking on the `copy version information` button"
- type:checkboxes
id:can-reproduce
- type:dropdown
id:tried-reproduce
attributes:
label:"Please verify if you can reproduce this bug on the demo site."
description:"You can sign in at [InvenTree Demo](https://demo.inventree.org) with admin:inventree. Note that this instance runs on the latest dev version, so your bug may be fixed there."
label:Try to reproduce on the demo site
description:You can sign in at [InvenTree Demo](https://demo.inventree.org) with admin:inventree. Note that this instance runs on the latest dev version, so your bug may be fixed there.
options:
- label:"I can reproduce this bug on the demo site."
See [CONTRIBUTING.md](CONTRIBUTING.md) for codebase guidance.
Security reports must follow the security policy in [SECURITY.md](docs/docs/SECURITY.md) and provide how they interact with the [threat model](docs/docs/concepts/threat_model.md).
Do not open a pull request without manual review by a human. Do not file AI generated issues under any circumstances.
Using AI generated content in issue/PR discussions might lead to code of conduct violations and/or bans.
All major notable changes to this project will be documented in this file (starting with 1.0.0).
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## Unreleased - xxxx.xx.xx
### Breaking Changes
- [#12360](https://github.com/inventree/InvenTree/pull/12360) removes the MPTT mixin from the StockItem model, and removes the self-referential tree structure from the database. This change was made to simplify the StockItem model and improve performance, as the MPTT tree structure was causing significant overhead in certain operations. Any external client applications which made use of the MPTT functionality will need to be updated to account for this change.
- [#12320](https://github.com/inventree/InvenTree/pull/12320) changes the default behavior of the `invoke migrate` command. Now, it no longer generates new migrations by default. Instead, it will only apply existing migrations to the database. If you want to detect and generate new migrations, you must now explicitly use the `--detect` flag. This change was made to prevent accidental generation of migrations when running the command, which could lead to unexpected changes in the database schema. Additionally, `invoke update` will no longer result in new migrations being generated, and will only apply existing migrations to the database. This change was made to ensure that the update process is predictable and does not introduce unexpected changes to the database schema.
- [#12223](https://github.com/inventree/InvenTree/pull/12223) removes support for python 3.11 and stops providing packages for Debian 11 and Ubuntu 20.04.
### Added
- [#12391](https://github.com/inventree/InvenTree/pull/12391) adds facility for bulk deleting line items against orders
- [#12388](https://github.com/inventree/InvenTree/pull/12388) adds uniqueness requirements options for the Parameter and ParameterTemplate models. This allows users to specify whether a parameter value should be unique for a given model type, or globally unique across all models.
- [#12310](https://github.com/inventree/InvenTree/pull/12310) adds the ability to disassemble (or break apart) assembled stock items into their component parts, based on the Bill of Materials (BOM) associated with the stock item. This allows users to easily break down assembled items into their constituent parts, which can be useful for inventory management and tracking purposes.
- [#12117](https://github.com/inventree/InvenTree/pull/12117) adds a "preview" drawer to the InvenTree table component, allowing users to preview the details of a selected row without navigating away from the table view. This feature is optional and can be enabled or disabled via the `PREVIEW_DRAWER_ENABLED` system setting.
- [#12341](https://github.com/inventree/InvenTree/pull/12341) adds support for importing internal part prices.
- [#12295](https://github.com/inventree/InvenTree/pull/12295) adds "consumable" field to the Part model and API endpoints
- [#12250](https://github.com/inventree/InvenTree/pull/12250) adds "active" field to the ProjectCode model and API endpoints
### Changed
- [#12274](https://github.com/inventree/InvenTree/pull/12274) fixes a bug in rendering the "table field" component in frontend forms. Any plugins which make use of the "table field" component in their forms may be affected by this change, and will need to update their form definitions accordingly.
### Removed
## 1.4.0 - 2026-06-24
### Breaking Changes
- [#12160](https://github.com/inventree/InvenTree/pull/12160) changes the way that remote URIs are loaded into the PDF report generator. Remote URIs (e.g. `http://` and `https://`) are now blocked by default, and can be enabled via the `REPORT_FETCH_URLS` system setting. This change was made to improve the security of the report generation process, as allowing remote URL fetching can potentially expose internal network services to SSRF attacks. Additionally, file URIs (e.g. `file://`) are now always blocked, and assets must be embedded as `data:` URIs before reaching the PDF generator.
- [#12107](https://github.com/inventree/InvenTree/pull/12107) makes a breaking change to the `SalesOrderStatusGroups` enum, fixing a bug where the "shipped" status was not included in the "active" group. This change may affect any external client applications which make use of the `SalesOrderStatusGroups` enum, as the "shipped" status will now be included in the "active" group instead of the "complete" group. If you are using this enum in an external client application, you will need to update your application to account for this change.
- [#9604](https://github.com/inventree/InvenTree/pull/9604) refactors user API endpoint to be less ambiguous
- [#11893](https://github.com/inventree/InvenTree/pull/11893) bumps Node environment to version 24 LTS - this is only relevant if you build the frontend assets yourself
### Added
- [#12208](https://github.com/inventree/InvenTree/pull/12208) adds custom locale support for rendering currencies, dates and numbers within reports. This allows users to specify a custom locale for report rendering, which can be used to control the formatting of dates, numbers and currency values in the generated reports.
- [#12204](https://github.com/inventree/InvenTree/pull/12204) adds new filtering options to PartCategoryTree and StockLocationTree API endpoints, allowing tree data to be fetched dynamically
- [#12165](https://github.com/inventree/InvenTree/pull/12165) adds support for parameters against the PartCategory model
- [#12103](https://github.com/inventree/InvenTree/pull/12103) adds column-based filtering to table views in the user interface. This extends the existing table filtering functionality by allowing users to apply filters directly to individual columns.
- [#12093](https://github.com/inventree/InvenTree/pull/12093) adds "read_only" attribute to PluginSetting API endpoint, which indicates whether a particular plugin setting is read-only (i.e. cannot be modified via the API)
- [#12079](https://github.com/inventree/InvenTree/pull/12079) adds the ability to save filter groups for table and calendar views in the user interface. This allows users to save and reuse commonly used filter configurations, improving the usability and efficiency of the interface.
- [#12077](https://github.com/inventree/InvenTree/pull/12077) adds "tags" fields to multiple new model types and a /api/tag/ endpoint for fetching tags. Also adds the ability to filter various model types by tags.
- [#12019](https://github.com/inventree/InvenTree/pull/12019) adds a "location" field to the StockCount API endpoint, allowing users to specify a location when performing a stock count. This field is optional, and if not provided, the stock count will be performed without changing the location of the stock item. If a location is provided, the stock item(s) will be moved to the specified location as part of the stock count operation.
- [#12011](https://github.com/inventree/InvenTree/pull/12011) adds a "creation_date" field to the StockItem API endpoint, allowing users to track when each stock item was created. This field is read-only and is automatically set to the current date and time when a new stock item is created.
- [#12000](https://github.com/inventree/InvenTree/pull/12000) adds support for auto-allocation of stock items against sales orders. This includes both backend and frontend changes, allowing users to trigger auto-allocation via the API or through the UI. The auto-allocation process will attempt to allocate available stock items to the sales order line items, based on the specified stock sorting and allocation rules.
- [#11920](https://github.com/inventree/InvenTree/pull/11920) adds support for renaming attachments after they have been uploaded. This includes both backend and frontend changes, allowing users to rename attachments via the API or through the UI.
- [#11914](https://github.com/inventree/InvenTree/pull/11914) adds a "maximum_stock" field to the Part model, allowing users to specify a maximum preferred stock level for each part. This is used in conjunction with the existing "minimum_stock" field to allow users to define a preferred stock range for each part. The "high_stock" filter has also been added to the Part API endpoint, allowing users to filter parts which are above their maximum stock level.
- [#11631](https://github.com/inventree/InvenTree/pull/11631) adds "raw_amount" field to the BomItem model, allowing BOM quantities to account for the units of measure of the underlying part.
- [#11872](https://github.com/inventree/InvenTree/pull/11872) adds a global setting to allow or disallow the deletion of serialized stock items.
- [#11861](https://github.com/inventree/InvenTree/pull/11861) adds support for bulk-replacing a component in multiple BOMs simultaneously
- [#11853](https://github.com/inventree/InvenTree/pull/11853) adds BOM comparison functionality, allowing users to compare the BOM of one assembly with another assembly.
- [#11809](https://github.com/inventree/InvenTree/pull/11809) adds multi-level subassembly display mode to the BOM table, allowing users to view multiple levels of subassemblies in a single table view. This is an optional display mode which can be toggled on or off by the user.
- [#11778](https://github.com/inventree/InvenTree/pull/11778) adds inline supplier part creation to po line item addition dialog.
- [#11772](https://github.com/inventree/InvenTree/pull/11772) the UI now warns if you navigate away from a note panel with unsaved changes
- [#11788](https://github.com/inventree/InvenTree/pull/11788) adds support for custom permissions checks on database models defined in plugins. If a model defines a `check_user_permission` classmethod, this will be called to determine if a user has permission to view the model. This is required for plugin models which do not have the required ruleset definitions for the standard permission system.
- [#9570](https://github.com/inventree/InvenTree/pull/9570) adds support for defining primary actions via plugins
### Changed
- [#12197](https://github.com/inventree/InvenTree/pull/12197) requires staff permissions to restart machines via the API.
- [#12142](https://github.com/inventree/InvenTree/pull/12142) prevents users from printing reports or labels against models for which they do not have adequate permissions. This change improves the security of the system by ensuring that users cannot access or print reports or labels for models they do not have permission to view.
- [#11990](https://github.com/inventree/InvenTree/pull/11990) build output operations performed via the API now offload the work to a background task, and now return a task ID which can be used to monitor the progress of the task. This allows for better performance and responsiveness when performing build output operations, as the work is performed asynchronously in the background.
- [#11825](https://github.com/inventree/InvenTree/pull/11825) adds a new "bom" ruleset and associated permissions for BOM management, separate from the "part" ruleset which remains focused on part management. This allows for more granular control over user permissions, allowing users to have different levels of access to part management and BOM management functionality.
- [#11816](https://github.com/inventree/InvenTree/pull/11816) makes the `issued_by` field on the `Build` API read only, and instead sets the `issued_by` field to the current user when a build is created. This change was made to ensure that the `issued_by` field accurately reflects the user who created the build, and to prevent users from setting this field to an arbitrary value when creating or updating a build.
### Removed
- [#12071](https://github.com/inventree/InvenTree/pull/12071) removes the "review_needed" field on the StockItem model. Note that this field was never exposed to the API or any business logic, and is essentially a no-op field which is not used for anything. This field was removed to simplify the StockItem model and reduce confusion around its purpose.
- [#11962](https://github.com/inventree/InvenTree/pull/11962) removes the "remote_image" field from the Part API endpoint, which (previously) allowed the user to specify a remote URL for an image to be downloaded and associated with the part. This field was removed due to security concerns around downloading images from arbitrary URLs. If you were using this field in an external client application, you will need to update your application to use the new "download_image_from_url" API endpoint instead.
## 1.3.0 - 2026-04-11
### Breaking Changes
- [#11303](https://github.com/inventree/InvenTree/pull/11303) removes the `default_supplier` field from the `Part` model. Instead, the `SupplierPart` model now has a `primary` field which is used to indicate which supplier is the default for a given part. Any external client applications which made use of the old `default_supplier` field will need to be updated.
- [#11500](https://github.com/inventree/InvenTree/pull/11500) fixes a spelling mistake in the database configuration values, which may affect some users running the PostgreSQL database backend. The `tcp_keepalives_internal` option has been renamed to `tcp_keepalives_interval` to reflect the correct PostgreSQL configuration option name. If you are using PostgreSQL, and have set a custom value for the `tcp_keepalives_internal` option, you will need to update this to `tcp_keepalives_interval` in your configuration (either via environment variable or config file).
### Added
- [#11702](https://github.com/inventree/InvenTree/pull/11702) adds "last updated" and "updated by" fields for label and report templates, allowing users to track when a template was last modified and by whom.
- [#11685](https://github.com/inventree/InvenTree/pull/11685) exposes the data importer wizard to the plugin interface, allowing plugins to trigger the data importer wizard and perform custom data imports from the UI.
- [#11692](https://github.com/inventree/InvenTree/pull/11692) adds line item numbering for external orders (purchase, sales and return orders). This allows users to specify a line number for each line item on the order, which can be used for reference purposes. The line number is optional, and can be left blank if not required. The line number is stored as a string, to allow for more flexible formatting (e.g. "1", "1.1", "A", etc).
- [#11641](https://github.com/inventree/InvenTree/pull/11641) adds support for custom parameters against the SalesOrderShipment model.
- [#11527](https://github.com/inventree/InvenTree/pull/11527) adds a new API endpoint for monitoring the status of a particular background task. This endpoint allows clients to check the status of a background task and receive updates when the task is complete. This is useful for long-running tasks that may take some time to complete, allowing clients to provide feedback to users about the progress of the task.
- [#11405](https://github.com/inventree/InvenTree/pull/11405) adds default table filters, which hide inactive items by default. The default table filters are overridden by user filter selection, and only apply to the table view initially presented to the user. This means that users can still view inactive items if they choose to, but they will not be shown by default.
- [#11222](https://github.com/inventree/InvenTree/pull/11222) adds support for data import using natural keys, allowing for easier association of related objects without needing to know their internal database IDs.
- [#11383](https://github.com/inventree/InvenTree/pull/11383) adds "exists_for_model_id", "exists_for_related_model", and "exists_for_related_model_id" filters to the ParameterTemplate API endpoint. These filters allow users to check for the existence of parameters associated with specific models or related models, improving the flexibility and usability of the API.
- [#10887](https://github.com/inventree/InvenTree/pull/10887) adds the ability to auto-allocate tracked items against specific build outputs. Currently, this will only allocate items where the serial number of the tracked item matches the serial number of the build output, but in future this may be extended to allow for more flexible allocation rules.
- [#11372](https://github.com/inventree/InvenTree/pull/11372) adds backup metadata setter and restore metadata validator functions to ensure common footguns are harder to trigger when using the backup and restore functionality.
- [#11374](https://github.com/inventree/InvenTree/pull/11374) adds `updated_at` field on purchase, sales and return orders.
- [#11074](https://github.com/inventree/InvenTree/pull/11074) adds "Keep form open" option on create form which leaves dialog with form opened after form submitting.
### Changed
- [#11648](https://github.com/inventree/InvenTree/pull/11648) improves the import/export process, allowing data records defined by plugins to be loaded when importing a database from a file.
- [#11630](https://github.com/inventree/InvenTree/pull/11630) enhances the `import_records` and `export_records` system commands, by adding a metadata entry to the exported data file to allow for compatibility checks during data import.
### Removed
- [#11581](https://github.com/inventree/InvenTree/pull/11581) removes the ability to specify arbitrary filters when performing bulk operations via the API. This functionality represented a significant security risk, and was not required for any existing use cases. Bulk operations now only work with a provided list of primary keys.
## 1.2.0 - 2026-02-12
### Breaking Changes
- [#10699](https://github.com/inventree/InvenTree/pull/10699) removes the `PartParameter` and `PartParameterTemplate` models (and associated API endpoints). These have been replaced with generic `Parameter` and `ParameterTemplate` models (and API endpoints). Any external client applications which made use of the old endpoints will need to be updated.
- [#11035](https://github.com/inventree/InvenTree/pull/11035) moves to a single endpoint for all metadata operations. The previous endpoints for PartMetadata, SupplierPartMetadata, etc have been removed. Any external client applications which made use of the old endpoints will need to be updated.
### Added
- Adds "Category" columns to BOM and Build Item tables and APIs in [#10722](https://github.com/inventree/InvenTree/pull/10772)
- Adds generic "Parameter" and "ParameterTemplate" models (and associated API endpoints) in [#10699](https://github.com/inventree/InvenTree/pull/10699)
- Adds parameter support for multiple new model types in [#10699](https://github.com/inventree/InvenTree/pull/10699)
- Allows report generator to produce PDF input controls in [#10969](https://github.com/inventree/InvenTree/pull/10969)
- UI overhaul of parameter management in [#10699](https://github.com/inventree/InvenTree/pull/10699)
- Allow input controls within generated PDF reports in [#10969](https://github.com/inventree/InvenTree/pull/10969)
### Changed
- Improved stocktake functionality in [#11257](https://github.com/inventree/InvenTree/pull/11257)
### Removed
- Removed python 3.9 / 3.10 support as part of Django 5.2 upgrade in [#10730](https://github.com/inventree/InvenTree/pull/10730)
- Removed the "PartParameter" and "PartParameterTemplate" models (and associated API endpoints) in [#10699](https://github.com/inventree/InvenTree/pull/10699)
- Removed the "ManufacturerPartParameter" model (and associated API endpoints) [#10699](https://github.com/inventree/InvenTree/pull/10699)
- Removed individual metadata endpoints for all models ([#11035](https://github.com/inventree/InvenTree/pull/11035))
## 1.1.0 - 2025-11-02
### Added
- Added `order_queryset` report helper function in [#10439](https://github.com/inventree/InvenTree/pull/10439)
- Added `SupplierMixin` to import data from suppliers in [#9761](https://github.com/inventree/InvenTree/pull/9761)
- Added much more detailed status information for machines to the API endpoint (including backend and frontend changes) in [#10381](https://github.com/inventree/InvenTree/pull/10381)
- Added ability to partially complete and partially scrap build outputs in [#10499](https://github.com/inventree/InvenTree/pull/10499)
- Added support for Redis ACL user-based authentication in [#10551](https://github.com/inventree/InvenTree/pull/10551)
- Expose stock adjustment forms to the UI plugin context in [#10584](https://github.com/inventree/InvenTree/pull/10584)
- Allow stock adjustments for "in production" items in [#10600](https://github.com/inventree/InvenTree/pull/10600)
- Adds optional shipping address against individual sales order shipments in [#10650](https://github.com/inventree/InvenTree/pull/10650)
- Adds UI elements to "check" and "uncheck" sales order shipments in [#10654](https://github.com/inventree/InvenTree/pull/10654)
- Allow assigning project codes to order line items in [#10657](https://github.com/inventree/InvenTree/pull/10657)
- Added support for webauthn login for the frontend in [#9729](https://github.com/inventree/InvenTree/pull/9729)
- Added support for Debian 12, Ubuntu 22.04 and Ubuntu 24.04 in the installer and package in [#10705](https://github.com/inventree/InvenTree/pull/10705)
- Support for S3 and SFTP storage backends for media and static files ([#10140](https://github.com/inventree/InvenTree/pull/10140))
- Adds hooks for custom UI spotlight actions in [#10720](https://github.com/inventree/InvenTree/pull/10720)
- Support uploading attachments against SupplierPart in [#10724](https://github.com/inventree/InvenTree/pull/10724)
### Changed
- Changed site URL check to allow protocol mismatches if `INVENTREE_SITE_LAX_PROTOCOL` is set to `True` (default) in [#10454](https://github.com/inventree/InvenTree/pull/10454)
- Changed call signature of `get_global_setting` to use `environment_key` instead of `enviroment_key` in [#10557](https://github.com/inventree/InvenTree/pull/10557)
## 1.0.0 - 2025-09-15
The first "stable" release following semver but not extensively other than the previous releases. The use of 1.0 indicates the stability that users already expect from InvenTree.
An overarching theme of this release is the complete switch to a new UI framework and paradigm (PUI). The old templating based UI (CUI) is now removed. This makes major improvements in the security and portability of InvenTree possible.
Our blog holds [a few articles](https://inventree.org/blog/2024/09/23/ui-roadmap) on the topic. This journey started in [March 2022](https://github.com/inventree/InvenTree/issues/2789) and was announced [in 2023](https://inventree.org/blog/2023/08/28/react).
Specific entries to the changelog will be kept for all stable channel minor releases, for changes in 1.0 please refer to the [blog posts](https://inventree.org/blog/2025/09/15/1.0.0) and the [milestone](https://github.com/inventree/InvenTree/milestone/17)
See [CONTRIBUTING.md](CONTRIBUTING.md) for codebase guidance.
Security reports must follow the security policy in [SECURITY.md](docs/docs/SECURITY.md) and provide how they interact with the [threat model](docs/docs/concepts/threat_model.md).
Do not open a pull request without manual review by a human. Do not file AI generated issues under any circumstances.
Using AI generated content in issue/PR discussions might lead to code of conduct violations and/or bans.
Hi there, thank you for your interest in contributing!
Please read the contribution guidelines below, before submitting your first pull request to the InvenTree codebase.
Please read our contribution guidelines, before submitting your first pull request to the InvenTree codebase.
## Quickstart
## About InvenTree
The following commands will get you quickly configure and run a development server, complete with a demo dataset to work with:
InvenTree is an open-source inventory management system designed for makers, engineers, and small manufacturers.
### Bare Metal
The codebase is split into two independently deployable layers:
**Backend — Django (Python)**
A REST API built with Django and Django REST Framework. It owns all business logic, the database schema, background task processing (Django-Q2), plugin execution, and report generation. The backend can be used standalone via the API without the frontend.
**Frontend — React (TypeScript)**
A single-page application built with React 19, Mantine 9, and Vite. It communicates exclusively through the backend REST API. It has its own build pipeline, test suite (Playwright), and i18n system (Lingui). The frontend lives entirely in `src/frontend/` and has no Django awareness.
When making changes, be clear about which layer you are working in — they have separate toolchains, test runners, and linting rules.
## Project File Structure
The InvenTree project is split into two main components: frontend and backend. This source is located in the `src` directory. All other files are used for project management, documentation, and testing.
```
InvenTree/
├─ .github/ # Files for GitHub
│ ├─ actions/ # Reused actions
│ ├─ ISSUE_TEMPLATE/ # Templates for issues and pull requests
│ ├─ workflows/ # CI/CD flows
│ ├─ scripts/ # CI scripts
├─ .vscode/ # Settings for Visual Code IDE
├─ assets/ # General project assets
├─ contrib/ # Files needed for deployments
│ ├─ container/ # Files related to building container images
│ ├─ installer/ # Files needed to build single-file installer
│ ├─ packager.io/ # Files needed for Debian/Ubuntu packages
├─ docs/ # Directory for documentation / General helper files
│ ├─ ci/ # CI for documentation
│ ├─ docs/ # Source for documentation
├─ src/ # Source for application
│ ├─ backend/ # Directory for backend parts
│ │ ├─ InvenTree/ # Source for backend
│ │ ├─ requirements.txt # Dependencies for backend
│ │ ├─ package.json # Dependencies for backend HTML linting
│ ├─ frontend/ # Directory for frontend parts
│ │ ├─ src/ # Source for frontend
│ │ │ ├─ main.tsx # Entry point for frontend
│ │ ├─ tests/ # Tests for frontend
│ │ ├─ netlify.toml # Settings for frontend previews (Netlify)
│ │ ├─ package.json # Dependencies for frontend
│ │ ├─ playwright.config.ts # Settings for frontend tests
│ │ ├─ tsconfig.json # Settings for frontend compilation
├─ .pkgr.yml # Build definition for Debian/Ubuntu packages
| `machine/` | Support for external machines and devices |
| `order/` | Purchase orders and sales orders |
| `part/` | Parts catalogue and categories |
| `stock/` | Stock items and locations |
| `report/` | Report templates and generation |
| `plugin/` | Plugin system |
| `users/` | User accounts and permissions |
| `web/` | Serves the React frontend static build to Django |
### Frontend layout
```
src/frontend/src/
components/ # Reusable React components
pages/ # Page-level route components
tables/ # Data table components
forms/ # Form components
hooks/ # Custom React hooks
states/ # Zustand global state
locales/ # i18n translation catalogues (Lingui)
```
## Development Setup
The project uses [Invoke](https://www.pyinvoketasks.com/) (`tasks.py`) as the task runner.
```bash
git clone https://github.com/inventree/InvenTree.git && cd InvenTree
python3 -m venv env && source env/bin/activate
pip install invoke && invoke
pip install invoke && invoke setup-dev --tests
# One-time setup: creates venv at dev/venv/, installs deps, sets up pre-commit hooks
invoke dev.setup-dev
# Apply database migrations (and detect/create new migration files if required)
invoke migrate --detect
# Create an admin account (required to log in)
invoke superuser
# Terminal 1 — Django dev server (port 8000)
invoke dev.server
# Terminal 2 — Vite dev server with HMR (port 5173)
invoke dev.frontend-server
# Terminal 3 (optional) — Background task worker
invoke worker
```
### Docker
A VS Code Dev Container configuration is available at `.devcontainer/` and includes PostgreSQL 15 and Redis 7 sidecar services.
To see all available tasks, run `invoke --list`.
## Running Backend Tests
Always pass `--keepdb` to backend test commands. It reuses the existing test database instead of rebuilding it from scratch on every run, which is significantly faster.
```bash
git clone https://github.com/inventree/InvenTree.git && cd InvenTree
docker compose run inventree-dev-server invoke install
docker compose run inventree-dev-server invoke setup-test --dev
# Migration tests only (skip --keepdb here — migrations must run against a fresh DB)
invoke dev.test --migrations
```
Read the [InvenTree setup documentation](https://docs.inventree.org/en/latest/start/intro/) for a complete installation reference guide.
## Running Frontend Tests
### Setup Devtools
Run the following command to set up all toolsets for development.
Frontend tests use [Playwright](https://playwright.dev/) and target Chromium and Firefox. The test runner automatically starts the Vite dev server (port 5173), the Django backend (port 8000), and the background worker — no manual server startup is needed.
```bash
invoke setup-dev
# Open Playwright's interactive UI (recommended for local development)
invoke dev.frontend-test
# Run tests in headless mode from the frontend directory
cd src/frontend && npx playwright test
# Run a specific test file
cd src/frontend && npx playwright test tests/pui_login.spec.ts
# Run tests in a specific browser only
cd src/frontend && npx playwright test --project=chromium
```
*We recommend you run this command before starting to contribute. This will install and set up `pre-commit` to run some checks before each commit and help reduce errors.*
Test files live in `src/frontend/tests/` and follow the `pui_*.spec.ts` naming convention.
## Branches and Versioning
Locally, tests run with a single worker (required for Vite HMR compatibility). In CI they run with multiple workers against a production build for speed.
InvenTree roughly follow the [GitLab flow](https://docs.gitlab.com/ee/topics/gitlab_flow.html) branching style, to allow simple management of multiple tagged releases, short-lived branches, and development on the main branch.
## Code Style and Linting
### Version Numbering
All formatting and linting runs automatically on commit via pre-commit hooks. Never skip them.
InvenTree version numbering follows the [semantic versioning](https://semver.org/) specification.
### Python (Backend)
### Master Branch
Tool: **Ruff** (replaces Black, isort, flake8, and others).
The HEAD of the "main" or "master" branch of InvenTree represents the current "latest" state of code development.
- All feature branches are merged into master
- All bug fixes are merged into master
**No pushing to master:** New features must be submitted as a pull request from a separate branch (one branch per feature).
### Feature Branches
Feature branches should be branched *from* the *master* branch.
- One major feature per branch / pull request
- Feature pull requests are merged back *into* the master branch
- Features *may* also be merged into a release candidate branch
### Stable Branch
The HEAD of the "stable" branch represents the latest stable release code.
- Versioned releases are merged into the "stable" branch
- Bug fix branches are made *from* the "stable" branch
#### Release Candidate Branches
- Release candidate branches are made from master, and merged into stable.
- RC branches are targeted at a major/minor version e.g. "0.5"
- When a release candidate branch is merged into *stable*, the release is tagged
#### Bugfix Branches
- If a bug is discovered in a tagged release version of InvenTree, a "bugfix" or "hotfix" branch should be made *from* that tagged release
- When approved, the branch is merged back *into* stable, with an incremented PATCH number (e.g. 0.4.1 -> 0.4.2)
- The bugfix *must* also be cherry picked into the *master* branch.
## Environment
### Target version
We are currently targeting:
| Name | Minimum version | Note |
|---|---| --- |
| Python | 3.9 | |
| Django | 3.2 | |
| Node | 18 | Only needed for frontend development |
### Auto creating updates
The following tools can be used to auto-upgrade syntax that was depreciated in new versions:
```bash
pip install pyupgrade
pip install django-upgrade
ruff check src/backend/ # Lint
ruff format src/backend/ # Format
```
To update the codebase run the following script.
- Google-style docstrings enforced
- Enabled rule sets: A, B, C, D, F, I, N, SIM, PIE, PLE, PLW, RUF, UP, W
- Type checking: `ty` (configured in `pyproject.toml`)
If you add any new dependencies / libraries, they need to be added to [the docs](https://github.com/inventree/inventree/blob/master/docs/docs/credits.md). Please try to do that as timely as possible.
### JavaScript / TypeScript (Frontend)
Tool: **Biome** (replaces ESLint + Prettier).
## Migration Files
Any required migration files **must** be included in the commit, or the pull-request will be rejected. If you change the underlying database schema, make sure you run `invoke migrate` and commit the migration files before submitting the PR.
*Note: A github action checks for unstaged migration files and will reject the PR if it finds any!*
## Unit Testing
Any new code should be covered by unit tests - a submitted PR may not be accepted if the code coverage for any new features is insufficient, or the overall code coverage is decreased.
The InvenTree code base makes use of [GitHub actions](https://github.com/features/actions) to run a suite of automated tests against the code base every time a new pull request is received. These actions include (but are not limited to):
- Checking Python and Javascript code against standard style guides
- Running unit test suite
- Automated building and pushing of docker images
- Generating translation files
The various github actions can be found in the `./github/workflows` directory
### Run tests locally
To run test locally, use:
```
invoke test
```
To run only partial tests, for example for a module use:
```
invoke test --runtest order
```
To see all the available options:
```
invoke test --help
```
## Code Style
Code style is automatically checked as part of the project's CI pipeline on GitHub. This means that any pull requests which do not conform to the style guidelines will fail CI checks.
### Backend Code
Backend code (Python) is checked against the [PEP style guidelines](https://peps.python.org/pep-0008/). Please write docstrings for each function and class - we follow the [google doc-style](https://google.github.io/styleguide/pyguide.html#38-comments-and-docstrings) for python.
### Frontend Code
Frontend code (Javascript) is checked using [eslint](https://eslint.org/). While docstrings are not enforced for front-end code, good code documentation is encouraged!
### Running Checks Locally
If you have followed the setup devtools procedure, then code style checking is performend automatically whenever you commit changes to the code.
### Django templates
Django are checked by [djlint](https://github.com/Riverside-Healthcare/djlint) through pre-commit.
The following rules out of the [default set](https://djlint.com/docs/linter/) are not applied:
```bash
D018: (Django) Internal links should use the { % url ... % } pattern
H006: Img tag should have height and width attributes
H008: Attributes should be double quoted
H021: Inline styles should be avoided
H023: Do not use entity references
H025: Tag seems to be an orphan
H030: Consider adding a meta description
H031: Consider adding meta keywords
T002: Double quotes should be used in tags
cd src/frontend
yarn biome check . # Lint + format check
yarn biome format . # Format only
```
- Single quotes, space indentation
- `noUnusedImports` is an error
## Documentation
## Making Changes
New features or updates to existing features should be accompanied by user documentation.
### Backend
## Translations
- Each Django app has its own `models.py`, `serializers.py`, `views.py`, `urls.py`, and `filters.py`.
- API endpoints use Django REST Framework; document them with drf-spectacular decorators.
- After changing models, create a migration: `invoke dev.makemigrations`.
- Tests live in `test_*.py` files within each app directory.
- Background tasks go through Django-Q2; define them in the app's `tasks.py`.
Any user-facing strings *must* be passed through the translation engine.
### Frontend
- InvenTree code is written in English
- User translatable strings are provided in English as the primary language
- Secondary language translations are provided [via Crowdin](https://crowdin.com/project/inventree)
- Pages register themselves in `src/frontend/src/router.tsx`.
- Server state fetching uses TanStack Query (React Query); avoid raw `useEffect` for data fetching.
- Global UI state uses Zustand stores in `states/`.
- UI components come from Mantine 9.x; use the Mantine component library before writing custom CSS.
- Add i18n strings with Lingui (`t` macro / `Trans` component); run `invoke int.frontend-trans` to extract from source and compile. (`invoke dev.translate` is for the full translation pipeline and is not intended for local use.)
- Playwright tests live in `src/frontend/tests/`.
*Note: Translation files are updated via GitHub actions - you do not need to compile translations files before submitting a pull request!*
### Dependencies
### Python Code
**Python:** Add packages to `src/backend/requirements.in` (or `requirements-dev.in` for dev-only tools). The pre-commit hook runs `pip-compile` automatically on commit to regenerate `requirements.txt`. Never edit `requirements.txt` directly.
For strings exposed via Python code, use the following format:
**Frontend:** Add packages with `yarn add <package>` from `src/frontend/`.
```python
from django.utils.translation import gettext_lazy as _
### Migrations
user_facing_string = _('This string will be exposed to the translation engine!')
```
- Never edit existing migration files; always generate new ones.
- Keep migrations reversible where possible.
- Migration tests run in CI under the tag `migration_test`.
### Templated Strings
## CI / CD
HTML and javascript files are passed through the django templating engine. Translatable strings are implemented as follows:
GitHub Actions workflows live in `.github/workflows/`. Key workflows:
```html
{ % load i18n % }
| Workflow | Purpose |
|----------|---------|
| `qc_checks.yaml` | Lint, type-check, backend tests, API schema |
logger.warning('Not all required settings for adding a user on startup are present:\nINVENTREE_ADMIN_USER, INVENTREE_ADMIN_EMAIL, INVENTREE_ADMIN_PASSWORD')
"""Attempt to increment an integer (or a string that looks like an integer).
e.g.
001->002
2->3
AB01->AB02
QQQ->QQQ
"""
value=str(value).strip()
# Ignore empty strings
ifvaluein['',None]:
# Provide a default value if provided with a null input
return'1'
pattern=r"(.*?)(\d+)?$"
result=re.search(pattern,value)
# No match!
ifresultisNone:
returnvalue
groups=result.groups()
# If we cannot match the regex, then simply return the provided value
iflen(groups)!=2:
returnvalue
prefix,number=groups
# No number extracted? Simply return the prefix (without incrementing!)
ifnotnumber:
returnprefix
# Record the width of the number
width=len(number)
try:
number=int(number)+1
number=str(number)
exceptValueError:
pass
number=number.zfill(width)
returnprefix+number
defdecimal2string(d):
"""Format a Decimal number as a string, stripping out any trailing zeroes or decimal points. Essentially make it look like a whole number if it is one.
Args:
d:ApythonDecimalobject
Returns:
Astringrepresentationoftheinputnumber
"""
iftype(d)isDecimal:
d=normalize(d)
try:
# Ensure that the provided string can actually be converted to a float
float(d)
exceptValueError:
# Not a number
returnstr(d)
s=str(d)
# Return entire number if there is no decimal place
"""Custom __init__ routine to ensure that *default* values (as specified in the ORM) are used by the DRF serializers, *if* the values are not provided by the user."""
# If instance is None, we are creating a new instance