* 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
* 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
* 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
* 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>
* 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
* 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>
* 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
* 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
* 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
* 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
* Bug fix for BarcodePOReceive endpoint
- Existing scan must match "stockitem" to raise an error
* bug fix: barcode.js
- Handle new return data from barcode scan endpoint
* Add barcode endpoint for allocating stock to sales order
* Improve logic for preventing over allocation of stock item to sales order
* Test for sufficient quantity
* Bump API version
* Bug fix and extra check
* Cleanup unit tests
* Add unit testing for new endpoint
* Add blank page for app sales orders docs
* Add docs for new barcode features in app
* Fix unit tests
* Remove debug statement
* Fix errors in variable names of examples
* Added drop down example
* Added drop down example
* Fixed picture name
* Fixed context variable in purchase order report
* Store data from example panel
* Store data from example panel
* Store data from example panel
* Add override fields for part pricing
* Allow pricing override values to be specified via the API
* Fix serializer
* Update pricing docs
* Add UI elements for manually overriding pricing data
* Increment API version
* Allow different image variations to be rendered in when using a part image in a report
* Use preview image in default test report
* Fix api_version
- Missed in https://github.com/inventree/InvenTree/pull/5906
* Update docstring
* Add similar functionality for company_image tag
* Update report documentation
* base-64 encode images for rendering in reports
- Allows image manipulation operations to be performed on the images
- Avoids any file pathing issues
* Update docs
* Fix unit tests
* More unit test fixes
* More unit test
* Handle missing file
* Instrument unit test
- Trying to determine what is going on here
* Fix for image resize
* Translate error messages
* Update default report templates
- Specify image size
* Fix errors in variable names of examples
* Added drop down example
* Added drop down example
* Fixed picture name
* Fixed context variable in purchase order report
* Embiggen search drawer
* Refactor search drawer queries:
- Use proper permission checks
* Actually check user settings
* Move StatusRenderer
* Update renderers
- Improve in-line render for different order types
* Update stockitem renderere
* Remove old renderer functions
* Better data handling in UserState
* Tweaks for settings pages
* "Fix" scanning page
- Rendering is a bit broken currently, as the barcode scan does not send back the model data
* "Fix" scanning page
- Rendering is a bit broken currently, as the barcode scan does not send back the model data
- Required refactoring enumerations out into separate files
- Some strange race condition / import loop was happening
* Fix incorrect imports
* Fixing hover card
- Use unique key
* fixes
* Fix urls.md
* More udpates
* Fix unused import
* Fixed error "Line 39 in Markdown file: Encountered unknown tag 'load'."
I did not include the statements {% raw %} and {% endraw %} to escape the code. I have been able to set up a dev server and can confirm this new md file works. My apologies!
* Added more documentation about Panels, and their role in `page_base.html`
* Added more sidebar documentation, and documentation about panels
* Fixed `Line 73 in Markdown file: Encountered unknown tag 'trans'.` error.
Also, made minor clarity improvements
* Reworded some sentences for clarity improvements.
Additionally, added more information about `onPanelLoad`
* Minor syntax updates
* Add skeleton for new label sheet plugin
* Add custom printing options serializer
* Render individual label outputs to HTML
* Extract page size and column size
* Check label dimensions before printing
* Split labels into multiple pages / sheets
* Render out multiple labels onto a single sheet
* Cleanup base label template
- Allow @page style to *not* be generated
- Pass through as optional context variable
- Check that it still works for single label printing (default behaviour unchanged)
- Prevents multiple @page styles from being generated on label sheet output
* Fix stylesheets for part labels
* Cleanup stock location labels
* Cleanup more label templates
* Check if label can actually fit on page
* Generate output to PDF and return correct response
* Update panel.md
* Fix unit tests
* More unit test fixes
I did not include the statements {% raw %} and {% endraw %} to escape the code. I have been able to set up a dev server and can confirm this new md file works. My apologies!
* Corrected report mixin example
* Remove unused file
* Added context variables for company and address
* Repair link in file
* Repair link in file
* Repair link in file
* Removed blank
* Added context variables for contacts to docs
* Typo in link
* Update .pre-commit-config.yaml
Revert version
* Delete InvenTree/order/migrations/0099_auto_20231101_1747.py
* Delete InvenTree/part/migrations/0119_auto_20231101_1747.py
---------
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
* Added backend changes to support printing options
* Pass printing options seperatly via kwargs for easier api refactor later
* Implemented printing options in CUI
* Fix js linting
* Use translations for printing dialog
* Added docs
* Remove plugin and template fields from send printing options
* Fix docs
* Added tests
* Fix tests
* Fix options response and added test for it
* Fix tests
* Bump api version
* Update docs
* Apply suggestions from code review
* Fix api change date
* Corrected report mixin example
* Remove unused file
* Added context variables for company and address
* Repair link in file
* Repair link in file
* Repair link in file
* Removed blank
* Add support for scanning digikey and mouser barcodes
* added small fixes if no part is found
* made small style cleanups
* Separate out ecia 2d barcode parser, Add quantity, PO number to response
* Use model instead of name for mouser supplier, add auto detection magic
* Add lcsc barcode support
* Move barcode plugins to new suppliers subdirectory
* Add get_supplier_part helper, Refactor plugins in preparation for #3791
* Add __init__.py to suppliers directory
* Improve formatting
* Add barcode integration tests
* Add api-barcode-po-receive endpoint
* Refactor supplier_barcode.py helpers into BarcodeMixin
* Implement the api-barcode-po-receive endpoint for all suppliers
* Always include lineitem in api response
* Fix location in response, only include quantity and location if set
* Check if barcode has already been assigned, Fix tests
* FIx quantity and location not being in lineitem reponse
* Use part.get_default_location() instead of part.default_location
* Fix fomatting again
* Fix type annotations for python 3.8
* Add get_supplier_part helper, check for barcode_data being a str
* Fix naming clash
* Clarify return type for scan_receive_item
* Improve model access using first() in two places
* Refactor a bunch of checks
* Improve selection of line item, if multiple line items match the SKU
* Add new api version for this PR
* Fix error if no line item exists
* Add debug print to investigate why tests are failing
* Remove the test print again
* Fix pre formatted log messages
* Test removing all plugins
* Test only with digikey plugin
* Test with all plugins, but without mouser "model" setting
* Test again without tests
* Test with simple tests
* Test with simple receive test
* Test with even more receive tests
* Test second receive test
* Test third receive test
* Test 4th receive test with debug prints
* Try deleting the stock item and stock locations
* Disable the test again
* Add SupplierBarcodeMixin to minimize shared code between plugins
* Add TME supplier barcode plugin
* Remove the TME tests again
* If this works the tests are broken, if this doesn't work the tests are broken too
* Add TME tests again
* Add back all tests again
* Fix TME purchase order number
* Fix TME qrcode regex
* Add documentation for this feature
* Fix TME qrcode regex
* Use Decimal instead of int for quantity
* Refactor get_supplier_parts, Add get_supplier method
* Improve docstrings
* Fix None type access
* FIx TME barcode detection, Improve supplier barcode handling
* Try to retrigger pipeline
* Refactor get_supplier_parts to not use lists
* Add DEFAULT_SUPPLIER_NAME to mouser plugin
* Add SUPPLIER_ID setting to other suppliers
* Fix supplier plugins not inheriting from settings mixin
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
There shouldn't be any blank lines after the function docstring.
Remove the blank lines to fix this issue.
Co-authored-by: deepsource-autofix[bot] <62050782+deepsource-autofix[bot]@users.noreply.github.com>
- Until the new frontend is fully ready to be shipped, adding this option only serves to confuse users (and break the install process potentially)
- Remove this option entirely from the invoke script
- Update documentation accordingly
* Added example for barcode plugin
* Add some words in stock location reports
* Correct error in link
* Correct error in link
* Typo in link
* Style in code example
* Add plugin mixin class for supporting exchange rates
* Split some mixin classes out into their own files
- mixins.py is becoming quite bloated!
* Add some new settings for controlling currency updates
* Adds basic plugin implementation
* Refactor existing implementation
- Builtin plugin uses frankfurter.app API
- Better error / edge case handlign
* Add sample plugin for currency exchange
* Allow user to select which plugin to use for plugin updates
* Observe user-configured setting for how often exchange rates are updated
* Updates for some of the sample plugins
* Fix plugin slug
* Add doc page
* Document simple example
* Improve sample
* Add blank page for currency settings info
* More info in "config" page
* Update docs again
* Updated unit tests
* Fill out default settings values when InvenTree runs
* Add log messages
* Significant improvement in default settings speed
- Use bulk create
- Be efficient
- Dont' be inefficient
* More strict checks
* Refactor default values implementation
- Don't run at startup
- Run on list API
- Implement generic @classmethod
* add wants_process_event to EventMixin
in register_event this function get called and the task is just offload if the plugin returns true
* add tests for wants_process_event
* fix comments for register_event after code changes
* add documentation for EventMixin.wants_process_event
* avoid pre-formatting log messages
---------
Co-authored-by: Oliver Lippert <oliver@lipperts-web.de>
* Change for DEFAULT_FROM_EMAIL
- Use USERNAME if not specified
(cherry picked from commit 487ac917c90e9fe3da4effaa9326b707ceecd321)
* Email configuration fails if DEFAULT_FROM_EMAIL not set
(cherry picked from commit 01e573c3a2702e7c21ed13b0cb44280c89d3dee1)
* Docs update
* Add info for installer, branch, publisher
* include version info
* fix permissions
* fix typo
* add more info
* use GH url
* fix node
* remove publisher
* remove more logging
* Add info to version view
* enable branch discovery when not set
* fix ref to github version
* add branch to about dialog
* use precise plattform information - if no env is set
* fix ref names
* load VERSION info
* rename plattform to target
* extend installer var
* add generic plattform info
* add docs for version info
* add more info
* add installer codes
* Add DIO code
* Add SPA views for react #2789
* split up frontend urls
* Add settings for frontend url loading
* add new UI scaffold
* remove tracking insert
* add platform app
* ensure static indexes work too
* add lingui
* add lingui config
* add mgmt tasks
* add base locales
* settings for frontend dev
* fix typo
* update deps
* add pre-commit
* add eslint
* add testing scaffold
* fix paths
* remove error - tests trip correctly
* merge workflow
* cleanup samples
* use name inline with other tests
* Add real worl frontend tests
* setup env
* tun migrations first
* optimize setup time
* setup demo dataset
* optimize run setup
* add test for class ui
* rename
* fix typo
* and another typo
* do install
* run migrations first
* fix name
* cleanup
* use other credentials
* use other credentials
* fix qc
* move envs to qc
* remove create_site
* reduce testing env
* fix test
* fix test call
* allaccess user
* add ui plattform check
* add better check
* remove unneeded env
* enable debug
* reduce wait time
* also build frontend on static
* add sort plugin
* fix order
* run pre-commit fixes
* add node min version
* Docker container (#129)
* Fix allocation check for completing build order (#5199)
- Allocation check only applies to untracked line items
* docker dev
Install required node packages to docker development image
* add import order settings
* cleanout built ui
* remove default arg from build
* remove eslint
* optimize svg
* add build step for plattform UI
* fix install command
* use alpine commands
* do not use cache when creating image
* Added release pipeline
* trigger: ci
* Fix ci
* Fix ci
* Fix ci
* fix: workflow
* fix: workflow
* fix: doubble zipping
* fix: doubble zipping
* fix: doubble zipping
* fix: doubble zipping
* fix: doubble zipping
* Added frontend-download helper to tasks.py
* revert unrelated change
* Add frontend step to update task
* add frontend stuff to version info
* small change to trigger ci
* keep terminal output clean
* return found versions
* fix suggested command
* revert small change
* move to multiline
* add flag to stop frontend compile
* make node building optional on static
* add node trans to transalte task
* ammend commands to use new flag
* remove unneeded flag
* add warning
* add yarn bypass
* docstrings
* check for docker env
---------
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
Co-authored-by: wolflu05 <76838159+wolflu05@users.noreply.github.com>
* Add database model for defining custom units
- Database model
- DRF serializer
- API endpoints
* Add validation hook
* Custom check for the 'definition' field
* Add settings page for custom units
- Table of units
- Create / edit / delete buttons
* Allow "unit" field to be empty
- Not actually required for custom unit definition
* Load custom unit definitions into global registry
* Docs: add core concepts page(s)
* Add some back links
* Update docs
* Add unit test for custom unit conversion
* More unit testing
* remove print statements
* Add missing table rule
* Add skeleton for builtin label printing plugin
* Force selection of plugin when printing labels
* Enhance LabelPrintingMixin class
- Add render_to_pdf method
- Add render_to_html method
* Enhance plugin mixin
- Add class attribute to select blocking or non-blocking printing
- Add render_to_png method
- Add default method for printing multiple labels
- Add method for offloding print job
* Simplify print_label background function
- All arguments now handled by specific plugin
* Simplify label printing API
- Simply pass data to the particular plugin
- Check result type
- Return result
* Updated sample plugin
* Working on client side code
* Cleanup
* Update sample plugin
* Add new model type
- LabelOutput model
- Stores generated label file to the database
- Makes available for download
* Update label printing plugin mixin
* Add background task to remove any old label outputs
* Open file if response contains filename
* Remove "default printer" option which does not specify a plugin
* Delete old labels after 5 days
* Remove debug statements
* Update API version
* Changed default behaviour to background printing
* Update label plugin mixin docs
* Provide default printer if none provided (legacy)
* Update unit test
* unit test updates
* Further fixes for unit tests
* unit test updates
* Added required attribute to settings/plugins, refactor: allValues
- added 'required' attribute to InvenTreeBaseSetting
- added 'check_all_settings'
- added 'all_settings' to get a list of all defined settings
- refactored 'allValues' to use new 'all_settings' function
- added docs for new 'check_setting' function on plugin SettingsMixin
* Fix typing to be compatible with python 3.9
* trigger: ci
* Fixed **kwargs bug and added tests
* Change the description of `File Storage Locations` variables
* Remove `INVENTREE_BACKUP_DIR` that is already explain on the backup documentation and bellow in this documentation
* Change docker dev server install
* Added --rm to docker compose run commands
This deletes the one-time-use container after exiting
* Added --dev to setup-test. This runs setup-dev as a part of
setup-test.
* Revisions
* Updates
* Add context
* Update docs
* Tyops :)
* Remove reference to action that has not happened yet
* Add initial model structure
* Initial Address model defined
* Add migration and unit tests
* Initial migration for Address model generated
* Unit tests for Address model added
* Move address field to new model
* Added migration to move address field to Address model
* Implement address feature to backend
* API endpoints for list and detail implemented
* Serializer class for Address implemented
* Final migration to delete old address field from company added
* Tests for API and migrations added
* Amend migration file names
* Fix migration names in test
* Add address property to company model
* Iinital view and JS code
* Fix indents
* Fix different things
* Pre-emptive change before merge
* Post-merge fixes
* dotdotdot...
* ...
* iDots
* .
* .
* .
* Add form functionality and model checks
* Forms require a confirmation slider to be checked to submit
if address is selected as primary
* Backend resets primary address before saving if new address
is designated as primary
* Fix pre-save logic to enforce primary uniqueness
* Fix typos
* Sort out migrations
* Forgot one
* Add admin entry and small fixes
* Fix migration file name and dependency
* Update InvenTree/company/models.py
Co-authored-by: Matthias Mair <code@mjmair.com>
* Update InvenTree/company/models.py
Co-authored-by: Matthias Mair <code@mjmair.com>
* Correct final issues
* .
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* Add method get_parameter
- Return a parameter for a part, on name
* Add unit test for new method
* Adds template tag to retrieve parameter based on name
* Update docs
* Adds BuildLineLabel model
- New type of label for printing against BuildLine objects
* Add serializer for new model
* Add API endpoints for new label type
* Add hooks to BuildLine table
* Create default label
- Create an example BuildLineLabel object
* Add admin integration
* Fix js code
* Use two-tiered template
- Allows base template to be updated
* Improve default label
* Add docs pages for labels
* Update nav
* Documentation for new label
* Add permission role
* Bump API version