c0c4e9c226
* 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 |
||
---|---|---|
.devcontainer | ||
.devops | ||
.github | ||
.vscode | ||
ci | ||
contrib | ||
deploy | ||
docker | ||
docs | ||
images/logo | ||
InvenTree | ||
src/frontend | ||
.deepsource.toml | ||
.eslintrc.yml | ||
.gitattributes | ||
.gitignore | ||
.pkgr.yml | ||
.pre-commit-config.yaml | ||
backportrc.json | ||
CONTRIBUTING.md | ||
crowdin.yml | ||
docker-compose.yml | ||
docker.dev.env | ||
Dockerfile | ||
LICENSE | ||
package-lock.json | ||
package.json | ||
Procfile | ||
pyproject.toml | ||
README.md | ||
readthedocs.yml | ||
RELEASE.md | ||
requirements-dev.in | ||
requirements-dev.txt | ||
requirements.in | ||
requirements.txt | ||
runtime.txt | ||
SECURITY.md | ||
tasks.py | ||
yarn.lock |
InvenTree
Open Source Inventory Management System
View Demo · Documentation · Report Bug · Request Feature
🌟 About the Project
InvenTree is an open-source Inventory Management System which provides powerful low-level stock control and part tracking. The core of the InvenTree system is a Python/Django database backend which provides an admin interface (web-based) and a REST API for interaction with external interfaces and applications. A powerful plugin system provides support for custom applications and extensions.
Check out our website for more details.
🧭 Roadmap
Want to see what we are working on? Check out the roadmap tag and horizon milestone.
🛠️ Integration
InvenTree is designed to be extensible, and provides multiple options for integration with external applications or addition of custom plugins:
👾 Tech Stack
Server
Database
Client
DevOps
🧰 Deployment / Getting Started
There are several options to deploy InvenTree.
Docker · · Bare Metal
Single line install - read the docs for supported distros and details about the function:
wget -qO install.sh https://get.inventree.org && bash install.sh
Refer to the getting started guide for a full set of installation and setup instructions.
📱 Mobile App
InvenTree is supported by a companion mobile app which allows users access to stock control information and functionality.
👋 Contributing
Contributions are welcomed and encouraged. Please help to make this project even better! Refer to the contribution page.
📜 Translation
Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged.
💸 Sponsor
If you use InvenTree and find it to be useful, please consider sponsoring the project.
💎 Acknowledgements
We would like to acknowledge a few special projects:
- PartKeepr as a valuable predecessor and inspiration
- Readme Template for the template of this page
Find a full list of used third-party libraries in our documentation.
❤️ Support
This project is supported by the following sponsors:
With ongoing resources provided by:
⚠️ License
Distributed under the MIT License. See LICENSE.txt for more information.