2
0
mirror of https://github.com/inventree/inventree-docs.git synced 2025-04-27 21:26:43 +00:00

General improvements for plugin documentation

This commit is contained in:
Oliver Walters 2022-03-26 11:44:09 +11:00
parent f9195aba71
commit 3dee271fa2
3 changed files with 38 additions and 11 deletions

View File

@ -7,15 +7,19 @@ title: Plugins
The InvenTree server code supports an extensible plugin architecture, allowing custom plugins to be integrated directly into the database server. This allows development of complex behaviours which are decoupled from core InvenTree code.
Plugins can be added from multiple sources:
- InvenTree built-in plugins are located in the directory `./InvenTree/plugin/builtin`.
- Custom plugins should be placed in the directory `./InvenTree/plugins`.
- Plugins can be installed via PIP (python package manager)
Plugins are discovered and loaded when the server is started.
- Plugins can be installed via PIP (python package manager)
- Custom plugins should be placed in the directory `./InvenTree/plugins`.
- InvenTree built-in plugins are located in the directory `./InvenTree/plugin/builtin`.
Note: Plugins are discovered and loaded only when the server is started.
!!! info "Enable Plugin Support"
To enable custom plugins, plugin support must be activated in the [server configuration](../start/config.md).
!!! question "Have you tried turning it off and on again?"
When new plugins are installed (and activated), both the web server and background worker must be restarted.
### Plugin Base Class
Custom plugins must inherit from the [IntegrationPluginBase class](https://github.com/inventree/InvenTree/blob/master/InvenTree/plugin/integration.py). Any plugins installed via the methods outlined above will be "discovered" when the InvenTree server launches.
@ -43,11 +47,11 @@ A *PluginConfig* database entry will be created for each plugin "discovered" whe
The configuration entries must be enabled via the [InvenTree admin interface](../settings/admin.md).
!!! warning "Disabled by Default"
Newly discovered plugins are disabled by default, and must be manually enabled by an admin user
Newly discovered plugins are disabled by default, and must be manually enabled (in the admin interface) by a user with staff privileges.
### Plugin Mixins
Common use cases are covered by pre-supplied modules in the form of mixins (similar to how [django](https://docs.djangoproject.com/en/stable/topics/class-based-views/mixins/) does it). Each mixin enables the integration into a specific area of InvenTree. Sometimes it also enhances the plugin with helper functions to supply often used functions out-of-the-box.
Common use cases are covered by pre-supplied modules in the form of *mixins* (similar to how [django](https://docs.djangoproject.com/en/stable/topics/class-based-views/mixins/) does it). Each mixin enables the integration into a specific area of InvenTree. Sometimes it also enhances the plugin with helper functions to supply often used functions out-of-the-box.
Supported mixin classes are:
@ -56,6 +60,7 @@ Supported mixin classes are:
- [AppMixin](./plugins/app.md)
- [BarcodeMixin](./plugins/barcode.md)
- [EventMixin](./plugins/event.md)
- [LabelPrintingMixin](./plugins.label.md)
- [NavigationMixin](./plugins/navigation.md)
- [ScheduleMixin](./plugins/schedule.md)
- [SettingsMixin](./plugins/settings.md)
@ -65,10 +70,20 @@ Supported mixin classes are:
Plugins can either be loaded from paths in the InvenTree install directory or as a plugin installed via pip. We recommend installation via pip as this enables hassle-free upgrades.
For development new plugins can be placed ina a subdirectory in `src/InvenTree/plugins`. Built-In plugins ship in `src/InvenTree/plugin/builtin`. To achive full unit-testing for all mixins there are some sample implementations in `src/InvenTree/plugin/samples`. These are not loaded in production mode.
### Builtin Plugins
### Plugin Installation File
Built-In plugins ship in `src/InvenTree/plugin/builtin`. To achive full unit-testing for all mixins there are some sample implementations in `src/InvenTree/plugin/samples`. These are not loaded in production mode.
### Local Directory
Custom plugins can be placed in the `src/InvenTree/plugins/` directory, where they will be automatically discovered. This can be useful for developing and testing plugins, but can prove more difficult in production (e.g. when using Docker).
### Plugin Installation File (PIP)
Plugins installation can be simplified by providing a list of plugins in a plugin configuration file. This file (by default, 'plugins.txt' in the same directory as the server configuration file) contains a list of required plugin packages.
Plugins can be installed from this file by simply running the command `invoke plugins`.
Plugins can be then installed from this file by simply running the command `invoke plugins`.
!!! success "Auto Update"
When the server installation is updated via the `invoke update` command, the plugins (as specified in *plugins.txt*) will also be updated automatically.

View File

@ -0,0 +1,12 @@
---
title: Label Mixin
---
## LabelPrintingMixin
The `LabelPrintingMixin` class enables plugins to print labels directly to a connected printer.
An example of this is the [inventree-brother-plugin](https://github.com/inventree/inventree-brother-plugin) which provides native support for the Brother QL and PT series of networked label printers.
If label printing plugins are enabled, they are able to be used directly from the InvenTree web interface:

View File

@ -109,8 +109,6 @@ nav:
- Email: settings/email.md
- Background Tasks: settings/tasks.md
- Extend:
- API: extend/api.md
- Python Interface: extend/python.md
- Plugins:
- Overview: extend/plugins.md
- How to plugin: extend/how_to_plugin.md
@ -123,6 +121,8 @@ nav:
- Schedule Mixin: extend/plugins/schedule.md
- Settings Mixin: extend/plugins/settings.md
- URL Mixin: extend/plugins/urls.md
- API: extend/api.md
- Python Interface: extend/python.md
- Themes: extend/themes.md
- Third-Party: extend/integrate.md
- App: