* 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>
* 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>
* 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
* 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
* 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
* 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!
* 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
* 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>
* 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
* Improvements for version banner
- Display at the bottom of the page
- Simplify text
* Use mkdocs version provider
* use 'navigation.instant'
* Support modern mkdocs features
- Much better navigation and improved features
* Content changes
* Add code to find previous versions
* Remove modern python syntax
* display output codes
* Hide version banner
* Extra debug message
* update terminology.md
* Add option to hide plugin setting from auto-generated plugin setting page
* Change hide to hidden
* Added small note to docs about hidden settings
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
---------
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
* 'Tag' management
Fixes#83
* Add for ManufacturerPart, SupplierPart
* Add tags for StockLocation, StockItem
* fix serializer definition
* add migrations
* update pre-commit
* bump dependencies
* revert updates
* set version for bugbear
* remove bugbear
* readd bugbear remove isort
* and remove bugbear again
* remove bugbear
* make tag fields not required
* add ruleset
* Merge migrations
* fix migrations
* add unittest for detail
* test tag add
* order api
* reduce database access
* add tag modification test
* use overriden serializer to ensuer the manager is always available
* fix typo
* fix serializer
* increae query thershold by 1
* move tag serializer
* fix migrations
* content_types are changing between tests - removing them
* remove unneeded fixture
* Add basic docs
* bump API version
* add api access to the docs
* add python code
* Add tags to search and filters for all models
* add check for links
* fix style
* call silently
* add dep
* add path
* ignore readme as it contains necesarry broken links
* fix syntax
* check recursevly
* run in sync
* use linkcheckmd instaead
* use sync
* add requests
* revert fix to check if checks still work
* fix lookup
* fix old link
* run check verbose
* run async
* remove recurse
* introduce error for test
* fix link